我有 2 个这样的 django 模型:
class UserProfile(models.Model):
user = models.OneToOneField(User)
organisation = models.CharField(max_length=200)
class Submission(models.Model):
user = models.ForeignKey(User)
date_submission = models.DateTimeField(db_index=True, default=datetime.now())
date_published = models.DateTimeField(db_index=True, null=True)
status = models.CharField(db_index=True, max_length=4000)
logfile = models.TextField(db_index=False)
其中每个“提交”对象由普通 django 用户拥有,并且每个用户都有一个使用 AUTH_PROFILE_MODULE 以正常方式配置的 UserProfile。
这如您所料,我可以看到 UserProfile 对象的组织字段:
Submission.objects.all()[0].user.userprofile.organisation
当我想序列化提交列表(用于导出到 json)时,通常我使用:
Submission.objects.all().values()
# or for more control of fields
Submission.objects.all().values('status', 'date_submission')
# to traverse a relationship.. get info from the User object
Submission.objects.all().values('user__username')
..这些工作正常。但我的问题是我不能:
Submission.objects.all().values('user__userprofile__organisation')
raise FieldError("Invalid field name: '%s'" % name)
django.core.exceptions.FieldError: Invalid field name: 'user__userprofile__organisation'
所以看起来 UserProfile 是一个“特例”。这在这里讨论过: Django 查询:在 user__userprofile 上调用 values()
但解决方案对我没有帮助(我很确定..)
这是 values() 方法的限制吗?有谁知道获得相同的 values() 输出但能够遍历 UserProfile 模型的方法?
感谢您的任何想法
-一世