我想在另一个模型对象实例。 我提出这个错误: Manager isn't accessible via topic instance 这是我的模型: class forum(models.Model): # Some attributs class topic(models.Model): # Some attributs class post(models.Model): # Some attributs def delete(self): forum = self.topic.forum super(post, self).delete() forum.topic_count = topic.objects.filter(forum = forum).count() 这是我的看法: def test(request, post_id): post = topic.objects.get(id = int(topic_id)) post.delete() 我得到: post.delete() forum.topic_count = topic.objects.filter(forum = forum).count() Manager isn't […]
我试图find一种方法来实现一个自定义的QuerySet和一个自定义Manager没有打破DRY。 这是我迄今为止: class MyInquiryManager(models.Manager): def for_user(self, user): return self.get_query_set().filter( Q(assigned_to_user=user) | Q(assigned_to_group__in=user.groups.all()) ) class Inquiry(models.Model): ts = models.DateTimeField(auto_now_add=True) status = models.ForeignKey(InquiryStatus) assigned_to_user = models.ForeignKey(User, blank=True, null=True) assigned_to_group = models.ForeignKey(Group, blank=True, null=True) objects = MyInquiryManager() 这工作正常,直到我做这样的事情: inquiries = Inquiry.objects.filter(status=some_status) my_inquiry_count = inquiries.for_user(request.user).count() 由于QuerySet与Manager没有相同的方法,因此会立即中断一切。 我试过创build一个自定义的QuerySet类,并在MyInquiryManager实现它,但是最终我复制了所有的方法定义。 我也发现这个代码片段可以工作,但是我需要将额外的parameter passing给for_user所以它会中断,因为它很大程度上依赖于重新定义get_query_set 。 有没有办法做到这一点,而无需在QuerySet和Manager子类中重新定义我的所有方法?