如何将字段从相关模型注释到查询集?

时间:2019-11-05 08:13:15

标签: django model annotate

我有两个模型:

全部:

class Lot(models.Model):
    name = models.CharField(max_length=150, db_index=True, unique=True)
    step = models.DecimalField(max_digits=2, decimal_places=2)

和出价:

class Bid(models.Model):
    auction = models.ForeignKey('Lot', on_delete=models.CASCADE)
    user_id = models.ForeignKey(User, on_delete=models.CASCADE, to_field='username')
    value = models.DecimalField(max_digits=5, decimal_places=2)

每个Lot实例可以有几个出价,但是任何Bid实例都只与一个特定的Lot相关。

我有一个有效的Lot批注,它为我提供了max_bid和next_bid值:

self.auc_set = Lot.objects.annotate(max_bid=Max('bid__value'), next_bid=(Max('bid__value') + F('step')))

我无法实现的是获得3个带注释的字段:max_bid,next_bid和last_bidder。

类似的东西:

self.auc_set = Lot.objects.annotate(max_bid=Max('bid__value'), next_bid=(Max('bid__value') + F('step')), last_bidder=F(bid_set).get('auction_id'= F('id'), 'value'=max_bid)['user_id'])

但可以。

更新: 如果我知道如何将“ id”从Lot.objects.annotate传递到Bid.objects.get部分,则将解决该问题:

auc_set = Lot.objects.annotate(last_bidder=Bid.objects.get(auction_id__exact='need_to_put_something_here', value=Max('value').user_id)

0 个答案:

没有答案