python - django 'QuerySet' 对象中的反向关系没有属性 'name'

标签 python django django-models orm

我有两个模型,分别称为 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/

相关文章:

python - Django UpdateView 不上传 ImageField

python-3.x - 如何获取多对多值并存储在 python +django 中的数组或列表中

python - Python 3 中的三向字符串比较

python - 提取大字符串的部分

django - 在 Django 用户记录中存储 unicode first_name 和 last_name

python - 如何在 Oauth_provider_toolkit Django rest_framework 中增加访问 token 的 "expires_in"时间?

python - 将非唯一列表的虚拟对象创建到 Python 中的列中

python - PyQt5 不适用于 macOs sierra

python - Django 复杂查询

python - 如何动态更新 Django 中的模型?