Je travaille avec une base de données existante et souhaite créer une relation ManyToMany entre deux tables. Le code abrégé est:Django REST Framework ManyToMany Erreur de champ
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')
Je reçois l'erreur suivante:
Cannot resolve keyword 'addresssummary' into field. Choices are: family_name, id, partial_matches, type_name
Toutes les idées? J'ai essayé de réorganiser les classes, mais cela n'aide pas. Si j'enveloppe la ligne d'échec dans un try/except clause, elle renvoie l'exception suivante:
'ManyToManyField' object has no attribute '_m2m_reverse_name_cache'
Ce problème apparaît lors de l'exécution de la migration? – wilcus
Non, j'ai un sérialiseur qui retourne un AddressSummary. L'erreur se produit lorsque j'appelle self.partial_matches.all() dans une propriété d'une instance de la classe AddressSummary. Le but est de retourner les family_names des adresses de référence avec le résumé. – vahndi