Django:查询多对一模型实例字段
我一直在学习Django教程,试图将一个模型实例的字段(通过外键)关联到另一个模型实例。我的意思是: 模型文件:Django:查询多对一模型实例字段,django,model,key,Django,Model,Key,我一直在学习Django教程,试图将一个模型实例的字段(通过外键)关联到另一个模型实例。我的意思是: 模型文件: from django.db import models class Usercar(models.Model): make = models.CharField(max_length=200) model = models.CharField(max_length=200) year = models.DateTimeField('year of car'
from django.db import models
class Usercar(models.Model):
make = models.CharField(max_length=200)
model = models.CharField(max_length=200)
year = models.DateTimeField('year of car')
def __unicode__(self):
return self.make
class Suggestcar(models.Model):
usercar = models.ForeignKey(Usercar)
make = models.CharField(max_length=200)
model = models.CharField(max_length=200)
year = models.DateTimeField('year of car')
def __unicode__(self):
return self.make
在shell中,这是我在尝试获取与usercar相关的suggestcar的品牌时得到的:
>>from django.utils import timezone
>>mycar1 = Usercar(make="Ford",model="Escort",year=timezone.now())
>>mycar1.save()
>>mycar1.suggestcar_set.create(make="Ford", model="Taurus", year=timezone.now())
>>mycar1.suggestcar_set.filter(id=1).make
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site- packages/django/core/management/commands/shell.pyc in <module>()
----> 1 mycar1.suggestcar_set.filter(id=1).make
AttributeError: 'QuerySet' object has no attribute 'make'
来自django.utils导入时区的>
>>mycar1=Usercar(make=“Ford”,model=“Escort”,year=timezone.now())
>>mycar1.save()
>>mycar1.suggestcar\u set.create(make=“Ford”,model=“Taurus”,year=timezone.now())
>>mycar1.suggestcar\u set.filter(id=1.make)
---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/commands/shell.pyc in()
---->1 mycar1.suggestcar\u set.filter(id=1)。生成
AttributeError:“QuerySet”对象没有属性“make”
如何获取此mycar1.suggestcar\u set.filter(id=1)的品牌?谢谢 返回查询集,如果要访问其中的对象,需要迭代查询集或从中获取第一个结果
mycar1.suggestcar_set.filter(id=1)[0].make
如果只想返回一个对象,那么应该使用
这仍然是返回一个DoesNotExist错误给我…我会让你知道,如果我搞砸了什么地方,它的工作。谢谢是什么导致了这个错误
DoesNotExist
和AttributeError
非常不同。如果您获得的是DoesNotExist
,则所提供的查询没有任何结果。您可以尝试mycar1.suggestcar\u set.values()
查看与mycar1
相关的所有suggestcar
对象
mycar1.suggestcar_set.get(id=1).make