2016-07-28 2 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를 반환하는 serializer가 있습니다. AddressSummary 클래스의 인스턴스 속성에서 self.partial_matches.all()을 호출하면 오류가 발생합니다. 목표는 요약과 함께 참조 주소의 family_names를 반환하는 것입니다. – vahndi

답변

0

당신은 당신의 시리얼이처럼 보이는 방법을 우리에게 보여 주어야한다.

누락 된 정보는 당신이 당신의 selfself.partial_matches.all()에인지 말하는

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

제한된 정보와

.. 답변자 어렵게 진행하고 답을 얻기의 기회가 다운 무엇을 추측 할 수 있도록 AddressSummary 인스턴스이지만 오류는 ReferenceAddress 인 모든 필드가 self임을 나타내며 실제로는 ReferenceAddress입니다.

그렇게 시작할 수도 있습니다.

+0

직렬화 이전에 오류가 발생하므로 포함하지 않았습니다. 위의 코드를 수정했습니다. 불행히도 모든 것을 보여줄 수는 없습니다. get_partial_matches 등록 정보는 표시되지 않은 다른 등록 정보에서 사용됩니다. – vahndi