我有模型:
class Topiccenter(models.Model):
name = models.TextField()
def sumentries(self):
return self.tc_books.count() + self.tc_journals.count()
class Book(models.Model):
name = models.TextField()
tc = models.ForeignKey(Topiccenter,related_name="tc_books")
class Journal(models.Model):
name = models.TextField()
tc = models.ForeignKey(Topiccenter,related_name="tc_journals")
我正在尝试做这样的事情:
更新
Topiccenter.objects.annotate(tc_books=Sum('tc_books'),
journals=Sum('tc_journals')
).extra(
select={'sum_entries':'tc_books+journals'},
order_by=('sum_entries',)
)
但它说:The annotation 'tc_books' conflicts with a field on the model.
最佳答案
问题是 tc_books
也是您图书的相关名称。此外,您尝试对非数字值使用 Sum
。您应该使用 Count
来代替。试试这个:
Topiccenter.objects.annotate(num_books=Count('tc_books'),
num_journals=Count('tc_journals')
).extra(
select={'sum_entries':'num_books+num_journals'},
order_by=('sum_entries',)
)
关于python - 注释 'xy'与模型上的字段冲突-django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22588058/