django - 如何将不同模型的查询集与外键关系合并?
问题描述
我在 django 中有具有外键关系的模型。我努力但无法解决问题。我有该查询集的查询集PropertyDetails
,我想获取Filestore
默认图像为True的所有值
class PropertyDetails(models.Model):
propertyname=CharField(max_length=10)
dateposted=CharField(max_length=10)
class Filestore(models.Model):
propertyid = models.ForeignKey(PropertyDetails,on_delete=models.CASCADE)
defaultimage=BooleanField()
imagename=models.CharField(max_lenth=10)
imgproperty=models.Charfield(max_lenth=11)
例如给定:
(QuerySet [PropertyDetails: P1, PropertyDetails: P2])
任务:
for (PropertyDetails: P1)
where defaultimage=True get values of
propertyname,values of filestore table combined with it
(and same for P2)
我想要的回应
{
"id":1,
"propertyname":"P1",
"propertyimage":["imgproperty":"property","imagename":"abc"],
"id":2,
"propertyname":"P2",
"propertyimage":["imgproperty":"property","imagename":"xyz"]
}
有没有有效的解决方案
解决方案
如果您Serializer
用于获取 json。首先添加相关字段:
propertyid = models.ForeignKey(PropertyDetails,on_delete=models.CASCADE, related_name='propertyid_set')
并像这样定义Serializer
:
class PropertyDetailsSerializer(serializers.ModelSerializer):
propertyimage = serializers.SerializerMethodField()
def get_propertyimage(self, item):
data = list(item.propertyid_set.filter(defaultimage=True).values('imgproperty', 'imagename'))
return data
class Meta:
model = PropertyDetails
fields = ['propertyimage', 'id', 'propertyname']
并PropertyDetailsSerializer
用于您的 api
推荐阅读
- java - 在不启动springboot的情况下在docker镜像中安装maven/java包
- c++ - 为什么 char 变量在转换为 ((char*)&) 时会在输入控制台中与 char 数组重叠?在 C++ 代码块中
- tomcat - 调试模式:红色消息让我很困惑
- html - 如何使单独 div 中的所有图像停止溢出?
- python - 来自numpy 2D数组的窗口值
- python - 如何有效地检查 Pandas 数据帧每一行中的连续值范围?
- java - 如何让用户输入字符串,然后根据输入的代码对数组进行排序以显示字符串
- sql - 基于两列查找平均值的简单 SQL 查询
- linux - 在多次 sed 运行中获取重复条目
- php - 如何使用闭包填充php中的数组?