如何通过父模型的属性来订购Django queryset?

时间:2018-05-22 13:39:08

标签: python django django-rest-framework

我有一个扩展Django用户模型的Profile模型,

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=False, blank=True)
    weight = models.DecimalField(max_digits=5, decimal_places=2, null=True, blank=True)
    height = models.DecimalField(max_digits=5, decimal_places=2, null=True, blank=True)
    activity_level = models.DecimalField(max_digits=2, decimal_places=1, null=True, blank=True)
    tdee = models.IntegerField(null=True, blank=True)

    def __str__(self):
        return self.get_username()

当我尝试访问查询集时:

queryset = Profile.objects.all().order_by('-date_joined')

它说

FieldError at /users/
Cannot resolve keyword 'date_joined' into field. Choices are: activity_level, height, id, set, sex, tdee, user, user_id, weight

如何通过Profile类的父模型中的属性来命令我的查询集,在本例中是User模型?

提前致谢。

1 个答案:

答案 0 :(得分:6)

您没有继承django.contrib.auth用户模型,正如我们所看到的,您正在与django.contrib.auth用户模型建立OneToOne关系。因此,django.contrib.auth用户模型不会出现在您的Profile模型中。 你可能会这样解决这个问题:

queryset = Profile.objects.all().order_by('-user__date_joined')