代码之家  ›  专栏  ›  技术社区  ›  Preston

AttributeError:“xxx”对象没有属性“yyy\u集”

  •  0
  • Preston  · 技术社区  · 7 年前

    我正试图扭转一个错误 foreign key relationship

    我试过使用 field_object.groups_set method 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'
    

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   Daniel Hepper    7 年前

    你已经准备好了 related_name 上 ForeignKey ff.facet_field.all()

        2
  •  1
  •   Jonas Vandermosten    7 年前

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