Django访问OneToOneField

时间:2014-03-22 15:30:00

标签: python django model

制作了扩展用户的视图:

class Client(models.Model):
    user = models.OneToOneField(User, related_name='user')

    def __unicode__(self):
          return "%s" % (self.user)   

我目前正在尝试通过访问Client对象来访问User模型。目前我在python shell中收到错误:

ValueError: invalid literal for int() with base 10:

我知道它与访问OneToOneField有关,但我不知道为什么。在我的案例中,我发现的所有解决方案都是从用户模型的角度而不是扩展客户端。

让它变得更清晰。每当我访问用户时。

>>> client1 = User.objects.get(username="client1")
>>> client1.user
>>> client1.user.attribute

它回显了扩展模型的属性,在本例中是Client属性。我怎样才能实现这一目标。所以通过客户端模型而不是用户模型。

1 个答案:

答案 0 :(得分:3)

我认为您需要传递用户对象而不是字符串。

client1 = User.objects.get(username="client_1") # this is the user object
client_obj = Client.objects.get(user=client1) # pass object NOT STRING

你也可以这样做:(假设给出了用户的id)

client1 = Client_objects.get(user__id=1) # pass the user's id instead

我希望它有效;)