0

我有两个模型。一种是任务模型,另一种是奖励模型。

class Task(models.Model):
    assigned_by = models.CharField(max_length=100)

class Reward(models.Model):
    task = model.ForeignKey(Task)

现在我想返回一个任务查询集以及其中的奖励字段。我试过这个查询。search_res = Task.objects.annotate(reward='reward')。

我收到此错误:注释“奖励”与模型上的字段冲突。 请告诉如何解决这个问题。我想要在每个任务对象中获得现场奖励。

4

1 回答 1

0

为了通过实际模型达到您的目标,我只需将关系与任务一起使用。

假设您有一个任务(或任务查询集):

t = Task.objects.get(pk=1)

或者

for t in Task.objects.all():

你可以得到这样的奖励:

t.reward_set.first()

如果没有与任务实际相关的奖励,请注意异常。

That incurs in quite an amount of queries for large datasets, so you could optimize the requests toward the DB with select_related or prefetch_related depending on your needs. Look at the Django docs for that.

于 2017-05-30T06:52:34.270 回答