问题描述
创建扩展用户的视图:
class Client(models.Model):
user = models.OneToOneField(User, related_name='user')
def __unicode__(self):
return "%s" % (self.user)
我当前正在尝试通过访问客户端对象来访问用户模型.目前,我在python shell中遇到错误:
I am currently trying to access the User model by accessing the Client object. At the moment I am getting an error in the python shell:
ValueError: invalid literal for int() with base 10:
我知道它与访问OneToOneField有关,但我不知道为什么.在我看来,我发现的所有解决方案都是从用户模型的角度来看的,而不是扩展的客户端.
I know it has something to do with accessing an OneToOneField but I don't know why. All the solutions I found were from the perspective of the User model and not the extended Client, in my case.
使其更加清晰.每当我访问用户时.
To make it abit clearer. Whenever I access the User.
>>> client1 = User.objects.get(username="client1")
>>> client1.user
>>> client1.user.attribute
它回显扩展模型的属性,在本例中为Client属性.我如何才能做到这一点.因此,通过客户端模型而不是用户模型.
It echos the attributes of the extended Model, in this case the Client attribute. How can I achieve this the other way around. So through the Client model instead of the User model.
推荐答案
我认为您需要传递用户对象而不是字符串.
I think you need to pass the user object and not a string.
client1 = User.objects.get(username="client_1") # this is the user object
client_obj = Client.objects.get(user=client1) # pass object NOT STRING
您还可以执行以下操作:(假设提供了用户ID)
you can also do this: (assuming the user's id is given)
client1 = Client_objects.get(user__id=1) # pass the user's id instead
我希望它能起作用;)
这篇关于Django访问OneToOneField的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!