Ich arbeite mit einer vorhandenen Datenbank und möchte eine ManyToMany-Beziehung zwischen zwei Tabellen erstellen. Der abgekürzte Code lautet:Django REST Framework ManyToMany Feld Fehler
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')
ich die folgende Fehlermeldung erhalten:
Cannot resolve keyword 'addresssummary' into field. Choices are: family_name, id, partial_matches, type_name
Irgendwelche Ideen? Ich habe versucht, die Klassen neu zu ordnen, aber das hilft nicht. Wenn ich die fehlerhafte Zeile in eine try/except-Klausel wickeln, gibt es die folgende Ausnahme:
'ManyToManyField' object has no attribute '_m2m_reverse_name_cache'
Dieses Problem tritt auf, wenn Sie migrate ausführen? – wilcus
Nein, ich habe einen Serializer, der eine AddressSummary zurückgibt. Der Fehler tritt auf, wenn ich self.partial_matches.all() in einer Eigenschaft einer Instanz der AddressSummary-Klasse aufruft. Ziel ist es, die family_names der Referenzadressen mit der Zusammenfassung zurückzugeben. – vahndi