django - 如何将相关模型中的字段注释到查询集?
问题描述
我有两个模型:
很多:
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,但是任何 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'])
但工作。
更新:如果我知道如何将 Lot.objects.annotate 中的“id”传递给 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)
解决方案
推荐阅读
- apache - Elastic Beanstalk 部署配置显示:DBInstance 不存在
- c++ - 在 Jetson TX2 上分析问题 C++。不显示函数名称
- dynamic - ConfigMap 中设置的环境变量动态变化
- c# - 如何使用 Ef Core 将集合封装到“复杂类型”对象中(包括示例)
- java - 如何一次在数据库列中获取多个文件名?我写了一个上传多个文件的代码
- javascript - 即使条件为真也无法显示 div,总是在 php 中显示 else 部分
- python-3.x - 如何将蒙特卡罗交叉验证应用于 Python 中的多元线性回归?
- generics - 类型不匹配; 找到`Message`,需要`T`
- javascript - 如何在滚动中包含导航高度以避免重叠?
- java - 签名的 jar 篡改验证