django - Django通过不同的相关对象注释QuerySet中的几个相同的对象
问题描述
我有:
# models
class Building(models.Model):
...
class Flat(models.Model):
building = models.ForeignKey(Building)
class Profile(models.Model):
flats = models.ManyToManyField(Flat)
# logic
building = Building.objects.create()
flat_1 = Flat.objects.create(building=building)
flat_2 = Flat.objects.create(building=building)
profile = Profile.objects.create()
profile.flats.add(flat_1)
profile.flats.add(flat_2)
profiles = Profile.objects.filter(flats__building=building)
我获得了profiles
2 个相同的个人资料。我如何用不同的方式注释它们中的每一个flat
:profiles.first().flat == flat_1
和profiles.last().flat == flat_2
?
也许Subquery()
但是如何?
UPD我在一些 DRF 列表视图中需要这个。JSON 中的输出必须类似于:
[
{
"profile_id": 1,
"flat_id": 2
},
{
"profile_id": 1,
"flat_id": 3
}
]
解决方案
要获得该输出,您可以执行以下操作:
data = Profile.objects.all().values('flats', 'id')
return Response(data=data)
在您的 DRF 视图中。
推荐阅读
- ios - 用于 iOS 开发的签名证书和配置文件
- performance - 在计算函数的大 O 表示法时,我们应该何时以及如何增加时间复杂度
- sql - 在 SELECT 语句中使用来自同一表的数据创建临时列
- powershell - 减去数组中的值
- typo3-9.x - 在 TYPO3 中使用 AdmPanel 时布局混乱
- sql - 按类别计算总和/计数并降序排序,以及内部连接
- c - 内存分配、递归函数和纯 C
- html - 用 getelemtentsbyid 计算表中有多少元素
- javascript - Javascript MVC:在控制器内部调用的模型方法返回 udefined -> 但为什么呢?
- javascript - jQuery:如何按类名循环 kendo ui 下拉列表?