2016-07-28 4 views
0

Я работаю с существующей базой данных и хочу создать отношения ManyToMany между двумя таблицами. Сокращенное обозначение:Django REST Framework ManyToMany Ошибка поля

class AddressSummary(models.Model): 

    class Meta: 
     managed = False 
     db_table = 'addresses' 
     app_label = 'myapp' 

    address_id = models.IntegerField(db_column='addr_id', primary_key=True) 
    partial_matches = models.ManyToManyField(
     to='ReferenceAddress', 
     through='AddressMatches' 
    ) 
    @property 
    def get_partial_matches(self): 
     try: 
      return self.partial_matches.all() 
     except Exception as E: 
      print(E) 


class ReferenceAddress(models.Model): 

    class Meta: 
     managed = False 
     db_table = 'reference_addresses' 
     app_label = 'myapp' 

    id = models.IntegerField(db_column='ID', primary_key=True) 
    family_name = models.CharField(unique=True, max_length=255) 
    type_name = models.CharField(unique=True, max_length=255) 
    partial_matches = models.ManyToManyField(
     to='AddressOverview', 
     through='AddressMatches', 
    ) 


class AddressMatches(models.Model): 

    class Meta: 
     managed = False 
     db_table = 'partial_matches' 
     unique_together = (('addr_id', 'ref_id'),) 
     app_label = 'myapp' 

    addr_id = models.ForeignKey('AddressSummary', models.DO_NOTHING, db_column='addr_id', to_field='address_id') 
    ref_id = models.ForeignKey('ReferenceAddress', models.DO_NOTHING, to_field='id') 

Я получаю следующее сообщение об ошибке:

Cannot resolve keyword 'addresssummary' into field. Choices are: family_name, id, partial_matches, type_name 

Есть идеи? Я пробовал переупорядочить классы, но это не помогает. Если я обернуть провальную линию в попытке/за исключением пункта, он возвращает следующее исключение:

'ManyToManyField' object has no attribute '_m2m_reverse_name_cache' 
+0

Эта проблема возникает при выполнении миграции? – wilcus

+0

Нет, у меня есть сериализатор, который возвращает AddressSummary. Ошибка возникает, когда я вызываю self.partial_matches.all() в свойстве экземпляра класса AddressSummary. Цель состоит в том, чтобы вернуть family_names ссылочных адресов с резюме. – vahndi

ответ

0

Вы должны показать нам, как ваш сериализатору выглядит.

Недостающей информация сделать отвечающие угадать сложнее, что происходит, и ваш шанс получить ответ идет вниз ..

С ограниченной информацией,

Cannot resolve keyword 'addresssummary' into field. Choices are: family_name, id, partial_matches, type_name

The error happens when I call self.partial_matches.all() in a property of an instance of the AddressSummary class

Вы говорите, что ваш self в self.partial_matches.all() является AddressSummary, но ошибка показывает все поля ReferenceAddress, предлагая self на самом деле ReferenceAddress.

Вы можете начать с этого.

+0

Ошибка перед любой сериализацией, поэтому я ее не включил. Я изменил код выше. К сожалению, я не могу показать все. Свойство get_partial_matches используется другими свойствами, не показанными. – vahndi

Смежные вопросы