使用python 2.7和Django 1.10
我有一个名为"主机名"链接到Django用户。我可以为用户分配一个模型对象,并正确创建对象;通过django管理GUI,我可以确认该对象"主机名"已创建并正确分配给选择的用户。
我的问题是,通过" Python manage.py shell",如何列出所有"主机名"链接到特定用户的对象,可以调用用户" user1"。
到目前为止,我已经得到了这个:
>>> from app.models import *
>>> from django.contrib.auth.models import User
>>> userVar = User.objects.get(pk=2)
>>> userVar
<User: user1>
>>> userVar.hostname()
上述内容失败了:
User object has no attribute "hostname"
我已尝试对上述命令进行不同的编辑,但都失败并出现同样的错误。
在models.py中:
class Hostname(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=200)
def __str__(self):
return self.name
我已经尽力去谷歌这个,但我是Django的新手,并且还在研究术语,所以如果有人能够纠正我在这里使用的术语,那将是非常感激的。
答案 0 :(得分:1)
您正在尝试查询记录为here的反向关系。
如果模型具有ForeignKey,则外键模型的实例将 有权访问返回第一个实例的Manager 模型。默认情况下,此Manager名为FOO_set,其中FOO为 源模型名称,小写。此Manager返回QuerySets 可以按照“检索”中的描述进行过滤和操作 对象“上面的部分。
user = User.objects.get(pk=2)
user_hosts = user.hostname_set.all()