【发布时间】:2022-02-11 06:07:27
【问题描述】:
假设我们有两个模型
Listing
class ListingStatus(models.Model):
FULL = 0
AVALIABLE = 1
STATUS_CATEGORY = (
(FULL, _("Full")),
(AVALIABLE, _("AVAIL")),
)
listing = models.OneToOneField(Listing, on_delete=models.CASCADE)
status = models.SmallIntegerField(choices=STATUS_CATEGORY, default=AVALIABLE)
def __str__(self):
return str(self.status)
在序列化代码中
class ListingStatusSerializer(ReadOnlyModelSerializer):
class Meta:
model = ListingStatus
fields = ["status"]
class ListingSerializer(ReadOnlyModelSerializer):
status = ListingStatusSerializer(source="listingstatus.status")
它不起作用。 我得到空的序列化程序
class ListingSerializer(ReadOnlyModelSerializer):
status = ListingStatusSerializer(source="listingstatus")
这可行,但我需要获取像 instance.status.status 这样的状态值。效率低下
class ListingSerializer(ReadOnlyModelSerializer):
status = ListingStatusSerializer(source="listingstatus")
def get_status(self, instance):
return instance.listingstatus.status
我可以用上面的代码实现我想要的,但我想确保它是最好的解决方案?
【问题讨论】:
-
你也可以这样做:
status = serializers.IntegerField(source="listingstatus.status")