2016-07-28 14 views
0

私は既存のデータベースを使用しており、2つのテーブル間でManyToMany関係を作成したいと考えています。省略コードは次のとおりです。Django RESTフレームワーク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 

任意のアイデア?私はクラスの並べ替えを試みましたが、これは助けになりません。 私はexcept節のtry /に失敗した行をラップする場合は、次の例外を返します。

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

この問題は、移行を実行すると表示されますか? – wilcus

+0

いいえ、私はAddressSummaryを返すシリアライザを持っています。このエラーは、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

関連する問題