我有两个模型,分别称为 car 和 producer。这两个模型之间存在多对一关系。
class Producer(models.Model):
name = models.CharField(max_length=30)
def __str__(self):
return self.name
class Car(models.Model):
name = models.CharField(max_length=20)
producer = models.ForeignKey(Producer, on_delete=models.CASCADE)
def __str__(self):
return self.name here
当我尝试查询反向关系时。
Producer.objects.filter(car__name='Mini')
然后它返回一个查询集对象
<QuerySet [<Producer: BMW>]>
当我尝试将查询集对象分配给一个变量并获取名称字段结果时,它给出了错误。
obj1 = Producer.objects.filter(car__name='Mini')
In [6]: obj1.name
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-6-5155cb2773b4> in <module>
----> 1 obj1.name
AttributeError: 'QuerySet' object has no attribute 'name'
这个错误可能是什么原因
最佳答案
什么时候使用get()
Django返回一个对象,你可以得到那个对象的变量,比如obj1.name
,但是当你使用filter
,Django 返回一个 Queryset
,你必须用 for 迭代查询集:
mini_producers = Producer.objects.filter(car__name='Mini')
for producer in mini_producers:
print(producer.name)
关于python - django 'QuerySet' 对象中的反向关系没有属性 'name',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62797709/