是否可以从django模型进行查询?
我有2个型号:
class Book(models.Model):
...
def copies_available(self):
pass
和
class BookCopy(models.Model):
...
book_category = models.ForeignKey(Book, related_name='copies')
issued_to = models.ForeignKey(EndUser, related_name='issued_books', null=True, blank=True)
我希望copies_available()
返回BookCopy
为Book
issued_to
None
个人的数量
答案 0 :(得分:2)
这应该有效:
class Book(models.Model):
...
def copied_available(self):
return self.copies.filter(issued_to__isnull=True).count()
答案 1 :(得分:0)
是的,只需在ForeignKey中设置limit_choices_to
即可。来自docs:
“限制此对象的可用admin或ModelForm选项的查找参数和值的字典(请参阅创建查询)。使用Python datetime模块中的函数来限制按日期选择对象。例如:”< / p>
limit_choices_to = {'pub_date__lte': datetime.date.today}
答案 2 :(得分:0)
我几年前做过这个,所以它可能有所改变:
您需要创建一个BookManager类,并将功能放在那里。然后将管理器分配给Book模型的对象变量,如下所示:
class BookManager(models.Manager):
def copied_available(self):
queryset = BookCopy.objects.filter(book_category=self.id).filter(issued_to is not None)
return queryset.count()
class Book(models.Model):
...
objects = BookManager()
因此,在您的模板中,您可以执行以下操作:
<p> Copies: {{ thebook.copied_available }}</p>