Django 在返回时将反向外键的值添加为字段
Django adding the values of reverse foreign key as field while returning
我有两个模型。一种是任务模型,一种是奖励模型。
class Task(models.Model):
assigned_by = models.CharField(max_length=100)
class Reward(models.Model):
task = model.ForeignKey(Task)
现在我想要 return 任务的查询集以及其中的奖励字段。我试过这个查询。
search_res = Task.objects.annotate(奖励='reward').
我收到此错误:注释 'reward' 与模型上的字段冲突。
请告诉如何解决这个问题。我想在每个任务对象中获得现场奖励。
为了用实际模型达到你的目标,我会简单地使用关系和任务。
假设您有一个任务(或一个任务查询集):
t = Task.objects.get(pk=1)
或
for t in Task.objects.all():
您可以获得这样的奖励:
t.reward_set.first()
注意异常情况,以防没有与任务实际相关的奖励。
这会导致对大型数据集的大量查询,因此您可以使用 select_related 或 [= 优化对数据库的请求30=] 取决于你的需要。查看 Django 文档。
我有两个模型。一种是任务模型,一种是奖励模型。
class Task(models.Model):
assigned_by = models.CharField(max_length=100)
class Reward(models.Model):
task = model.ForeignKey(Task)
现在我想要 return 任务的查询集以及其中的奖励字段。我试过这个查询。 search_res = Task.objects.annotate(奖励='reward').
我收到此错误:注释 'reward' 与模型上的字段冲突。 请告诉如何解决这个问题。我想在每个任务对象中获得现场奖励。
为了用实际模型达到你的目标,我会简单地使用关系和任务。
假设您有一个任务(或一个任务查询集):
t = Task.objects.get(pk=1)
或
for t in Task.objects.all():
您可以获得这样的奖励:
t.reward_set.first()
注意异常情况,以防没有与任务实际相关的奖励。
这会导致对大型数据集的大量查询,因此您可以使用 select_related 或 [= 优化对数据库的请求30=] 取决于你的需要。查看 Django 文档。