class Author(Model):
state = models.CharField('ST')
class Essay(Model):
authors = models.ManyToManyField("Author",
through='EssayAuthor')
>> mylist
[ <Essay: A1>, <Essay: B4>, <Essay: C9>, <Essay: A3> ... ]
mylist是QuerySet
。
我想使用Essay
的{{1}}为mylist中的state
的每个实例添加另一个属性。假设具有多个作者的书籍的状态是等同的。因此,对于一篇有2位作者的论文,使用哪个作者并不重要。
因此,我希望能够做到这一点:
Author
>> essay0 = mylist[0]
>> essay0.state
'AK'
方法仅对数值/浮点值有用;所以我不能用它。如果我使用生成器来注入属性,我该如何重构QuerySet?
答案 0 :(得分:1)
你能在模型类中做到这一点吗?
class Essay(Model):
authors = models.ManyToManyField("Author",
through='EssayAuthor')
@property
def state(self):
if self.authors.count():
return self.authors[0].state
else:
return null
在这种情况下,我认为你不能动态地注释你的查询集,尤其是“只使用一个作者,如果有多个”逻辑。另一种选择是使用extra()为这些附加数据构建更复杂的SQL查询。