获取与外键相关的模型数据
我有一个模型,它和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()
现在从profile变量中,我得到了所有在UserProfile
模型中的数据,但没有从User
模型中获取到数据,比如说,我得到了gender, credits
等信息,但没有user email, name
等来自User
模型的信息。不过我想要所有与用户相关的信息。我知道request
参数会包含User instance
,但以后我可能会在其他与外键相关的模型中遇到同样的问题。
所以请告诉我获取与Foreign key
相关的User
数据的最佳方法。
谢谢
1 个回答
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.