0

假设您有一个 django 模型,该模型与用户具有 OneToOne / Unique ForeignKey 关系,如Django 文档中有关如何创建 UserProfile 所示。

现在假设您有一个视图方法,该方法接受可以从中获取用户的请求。查询与该用户关联的个人资料的最佳方式是什么?

from django.contrib.auth.models import User

# sample user profile model associated with user
class UserProfile(models.Model):
    likes_spam = models.BooleanField()
    user = models.OneToOneField(User)

#view method
def forward_to_practice_home(request):
    user = request.user
    profile_for_user = #insert code here that would get the profile for that user
4

3 回答 3

2

related_names 很有帮助。如果您将用户配置文件定义更改为:

class UserProfile(models.Model):
    likes_spam = models.BooleanField()
    user = models.OneToOneField(User, related_name='profile')

那么您可以按如下方式使用配置文件:

def forward_to_practice_home(request):
    user = request.user
    profile_for_user = user.profile
于 2012-10-03T02:37:44.680 回答
1

UserProfile.objects.get(user=user)

于 2012-10-03T02:37:15.783 回答
0

您可以使用一种称为get_profile()的特殊方法

profile_for_user = user.get_profile()

请注意,您必须在settings.py中设置AUTH_PROFILE_MODULE

但是,这在 Django 1.5 中已被弃用,因为它添加了对用户模型自定义的支持

于 2012-10-03T08:52:39.007 回答