【问题标题】:AttributeError: 'xxx' object has no attribute 'yyy_set'AttributeError:“xxx”对象没有属性“yyy_set”
【发布时间】:2019-05-22 01:32:15
【问题描述】:

我正在尝试将 foreign key relationship 从一个模型反转到另一个模型。就我而言,这意味着查看给定 FieldFacet 对象(一个)的所有 Groups 对象(很多)。

我试过使用field_object.groups_setmethod as described here,但我得到了错误:

AttributeError: 'FieldFacet' object has no attribute 'groups_set'

我已经检查过(作为公认的解决方案)我正在导入对象,并且我可以引用它们的名称,并查询它们的对象。

我的模型如下所示:

class FieldBase(models.Model):
    field = models.ForeignKey('Field', on_delete=models.CASCADE)
    ...
    class Meta:
        abstract = True
class FieldFacet(FieldBase):
    ...

class Groups(models.Model):
    field = models.ForeignKey('FieldFacet', related_name='facet_field', on_delete=models.CASCADE)
    ...

ff = FieldFacet.objects.get(pk=1)
ff.__dict__
# output
# {'_state': <django.db.models.base.ModelState object at 0x7fa22b9865c0>, 'id': 1, 'recipe_id': 1, 'field_id': 1, 'data_type': 'text', 'json_path': '_id', 'order': 0, 'normalization': True, 'stripping': True, 'intelligent_size_limit': 0, 'max_values': 10, 'sorting': 'count', 'groups': 'no', 'default_group': ''}

gg = Groups.objects.all()
for g in gg:
    print(g.__dict__)
# output
# {'_state': <django.db.models.base.ModelState object at 0x7fa22b986b38>, 'id': 4, 'field_id': 1, 'name': 'p', 'minimum': None, 'maximum': None, 'values': '7'}
# {'_state': <django.db.models.base.ModelState object at 0x7fa22b986ba8>, 'id': 3, 'field_id': 1, 'name': 'second', 'minimum': 1, 'maximum': 3, 'values': None}
# {'_state': <django.db.models.base.ModelState object at 0x7fa22b986c18>, 'id': 2, 'field_id': 1, 'name': 'text', 'minimum': None, 'maximum': None, 'values': 'list of text'}
# {'_state': <django.db.models.base.ModelState object at 0x7fa22b986c88>, 'id': 1, 'field_id': 1, 'name': 'first', 'minimum': 5, 'maximum': 10, 'values': None}

# problem here:
gro = ff.groups_set
# Traceback (most recent call last):
# File "<console>", line 1, in <module>
# AttributeError: 'FieldFacet' object has no attribute 'groups_set'

为什么我会看到这个错误?

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    您已在ForeignKey 上设置了related_name。试试ff.facet_field.all()

    【讨论】:

      【解决方案2】:

      您将字段“字段”命名为 facet_field。试试 ff.facet_field,你会得到你想要的。

      【讨论】:

        猜你喜欢
        • 2019-06-21
        • 2012-05-03
        • 1970-01-01
        • 2012-12-01
        • 2021-04-19
        • 2021-11-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多