【问题标题】:How to order related field by its foreign key fields?如何通过其外键字段对相关字段进行排序?
【发布时间】:2017-07-25 22:14:43
【问题描述】:

假设我有如下三个模型;

class Stats(models.Model):
    gp = models.IntegerField(default=0)
    won = models.IntegerField(default=0)
    drawn = models.IntegerField(default=0)
    lose = models.IntegerField(default=0)
    gf = models.IntegerField(default=0)
    ga = models.IntegerField(default=0)
    gd = models.IntegerField(default=0)
    pts = models.IntegerField(default=0)

class Team(models.Model):
    team_name = models.CharField(max_length=50)
    stats = models.ForeignKey(Stats)

class Group(models.Model):
    group_name = models.CharField(max_length=1)
    teams = models.ManyToManyField(Team)

而且,这是我的组模型序列化程序

class GroupSerializer(serializers.ModelSerializer):
    teams = TeamSerializer(read_only=True, many=True)

    class Meta:
        model = Group
        fields = '__all__'

但是,我想根据他们统计数据的 pts 和 gd 字段对团队进行排序。我尝试将 order_with_respect_to='stats' 添加到 Team 模型并将 ordering = ['pts', 'gd'] 添加到 Stats 模型,但没有成功。

【问题讨论】:

    标签: django django-models django-serializer


    【解决方案1】:

    尝试以下方法:

    class Team(models.Model):
        team_name = models.CharField(max_length=50)
        stats = models.ForeignKey(Stats)
    
        class Meta:
            ordering = ['stats__pts', 'stats__gd']
    

    【讨论】:

    • 是的,我只是为降序添加了一个“-”符号谢谢你
    猜你喜欢
    • 1970-01-01
    • 2014-05-17
    • 2018-01-19
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 2012-12-09
    相关资源
    最近更新 更多