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

2 投票
1 回答
743 浏览
提问于 2025-04-17 22:04

我有一个模型,它和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.

撰写回答