我有一个扩展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模型?
提前致谢。
答案 0 :(得分:6)
您没有继承django.contrib.auth用户模型,正如我们所看到的,您正在与django.contrib.auth用户模型建立OneToOne关系。因此,django.contrib.auth用户模型不会出现在您的Profile模型中。 你可能会这样解决这个问题:
queryset = Profile.objects.all().order_by('-user__date_joined')