从与外键相关的模型中获取数据

时间:2014-03-13 06:09:26

标签: python django django-models django-views

我有一个与User model Foreign key相关的模型:

class UserProfile(models.Model):
    user        = models.ForeignKey(User)
    gender      = models.CharField(max_length=10)
    credits     = models.IntegerField()
    ...

现在我想获取用户数据,为此我确实喜欢这样:

profile = user.userprofile_set.select_related()

现在来自个人资料变量我的所有数据都在UserProfile模型中但不是来自User模型,例如,我有gender , credits等但不是{{来自user email, name模型的1}}等。但我想要所有与用户相关的信息,我知道User参数会有request但后来我可能会遇到与其他相关模型相同的问题用外键。

所以请让我知道以最合适的方式获取与User instance相关的User数据的最佳方式。

谢谢

1 个答案:

答案 0 :(得分:2)

使用时:

profile = UserProfile.objects.select_related('user').get(pk = <pk of userprofile instance>)

当您从user表中获取数据时,它不会执行第二次查询,如下所示:

print profile.user.email ## Won't execute second query

现在,您可以使用model_to_dict

获取所有或特定字段
from django.forms.models import model_to_dict
print model_to_dict(profile.user, fields=[], exclude=[]) ## All information of user relation.