django - 如何在 django 模型序列化器中显示一个新字段?
问题描述
我创建了一个不同的模型序列化器,如 LocationDetailSerializer、ListingDetialSerializer 等。他们的每个模型都与 PropertySerializer 的模型共享 OneToOne 关系。
物业模型:
class Property(models.Model):
# ? Relationships
user = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE
)
# ? Fields
property_unique_hash_id = models.UUIDField(
default=uuid.uuid4, editable=False
)
.
.
.
.
created = models.DateTimeField(auto_now_add=True, editable=False)
last_updated = models.DateTimeField(auto_now=True, editable=False)
def __str__(self):
return "Property " + str(self.pk)
上市详细型号:
class ListingDetial(models.Model):
# ? Relationships
property = models.OneToOneField("properties.Property",
on_delete=models.CASCADE)
listing_property_type = models.PositiveSmallIntegerField(
choices=choices.LISTING_PROPERTY_TYPE,
default=choices.LISTING_PROPERTY_TYPE.single_family_detached,
)
.
.
.
created = models.DateTimeField(auto_now_add=True, editable=False)
last_updated = models.DateTimeField(auto_now=True, editable=False)
def __str__(self):
return "Listing Detail" + str(self.pk)
属性序列化器:
class PropertySerializer(serializers.ModelSerializer):
# location_detail = LocationDetailSerializer()
# listing_detial = ListingDetialSerializer()
.
.
.
.
.
class Meta:
model = Property
fields = "__all__"
在PropertySerializer中,我还想要诸如 location_detail、listing_details 之类的字段,以便它可以与视图一起传递。
如何做到这一点?
解决方案
这就是我让它工作的方式:
class PropertySerializer(serializers.ModelSerializer):
locationdetail = LocationDetailSerializer()
listingdetial = ListingDetialSerializer()
.
.
class Meta:
model = Property
fields = "__all__"
这将以以下方式给出 json:
{
"id": 3,
"locationdetail": {
"id": 3,
"property": 3
.
.
"created": "2021-01-03T01:53:58.987287Z",
"last_updated": "2021-01-03T01:53:58.987287Z",
},
"listingdetial": {
"id": 3,
"property": 3
.
.
"created": "2021-01-03T01:53:58.873135Z",
"last_updated": "2021-01-03T01:53:58.873135Z",
},
}
推荐阅读
- javascript - 有人可以帮我用所有相同的键从 JSON 制作数组吗?
- javascript - 如何修复 Javascript onclick 调用?
- amazon-web-services - Elastic Beanstalk - EFS 无法在部署时挂载 - 设备或资源繁忙
- matlab - Bar3 绘图增加条形厚度
- python - 如何使用按钮启用和禁用 QHeaderView 过滤器
- python - 在嵌套字典上获得太多参数或太少参数
- css - Bootstrap 4 - “透明”固定导航栏但没有字母透明
- java - AssertJ 无法断言没有比例的 BigDecimal 相等
- python - 逻辑回归模型系数
- flutter - 如何将我的切换按钮映射到它们各自的变量?