首页 > 解决方案 > 用于从多个类中获取数据的序列化器

问题描述

环境是PythonDjango3

我想制作从多个模型类中检索数据的 api。

我有这样的模型,每个 CountryStat 都有 Country。

class Country(models.Model):
    code = models.CharField(max_length=3,unique=True)
    name = models.CharField(max_length=50)

class CountryStat((models.Model):
    country = models.ForeignKey(Country, on_delete=models.CASCADE,null=True)
    date = models.DateField(null=True,blank =True)
    stat = models.IntegerField()

现在我想获得Coutry Stat每个Country.

所以我为 Country 制作了序列化器

class CountrySerializer(serializers.ModelSerializer): 
    latest_stat = serializers.SerializerMethodField()
    class Meta:
        model = Country
        fields = ('id','code','latest_stat')
    def get_latest_stat(self,obj):
        # how can I get the latest stat from CountryStat model ????

这是正确的想法还是我该怎么做?

标签: pythonjsondjangoserialization

解决方案


您应该latest_stat在模型上定义一个自定义属性:

class Country(models.Model):
  code = models.CharField(max_length=3,unique=True)
  name = models.CharField(max_length=50)  
  
  def latest_stat(self):
    return self.countrystat_set.order_by('-date').first()

推荐阅读