我有一个应用程序,其中模型扩展了用户模式。
class ExtendedUser (models.Model):
user = models.ForeignKey(User)
favorite_color = models.CharField(...
#...
我有另一个应用程序也有一个带有用户模型的外键。
我想知道如何访问与特定用户相关的所有信息?
当我尝试建立反向关系时,我的问题出现了(我想),这是我尝试的内容:
>>from django.contrib.auth.models import User
>>from firstapp.models import ExtendedUser
>>a = User.objects.get(pk=1)
>>a
<User: username1>
>>b = a.favorite_color
AttributeError: 'User' object has no attribute 'favorite_color'
>>c = ExtendedUser.objects.get(pk=1)
>>c
<User: username1>
>>c.favorite_color
<Favorite_color: blue>
问题是当我在“a”时我无法访问用户的扩展模型信息,例如“favorite_color”,当我在“c”时,我无法访问用户模型本机信息,如电子邮件或烫发。有没有办法做到这一点?
而且,
有没有办法可以选择一个用户ID并查看与该对象相关的所有字段(来自所有模型和应用)?
答案 0 :(得分:1)
但这根本不是“扩展用户模型”。您可以通过ForeignKey引用完全不同的模型。我不知道为什么你希望favorite_color
突然变成User模型的属性。
使用OneToOneField
代替ForeignKey(这意味着每个用户使用许多ExtendedUser)。然后你可以直接关注这个关系:
user = User.objects.get(pk=1)
print user.extendeduser.favorite_color