Ich versuche ein System zu implementieren, das für zwei Profile
Modellobjekte ein Teil eines Pair
Modellobjekts sein kann.Viele-zu-viele-Beziehung mit 'durch' Modell Fehler bei der Migration
Hier wird das Profil ist durch ein Paar Modell gefolgt:
class Profile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
null=True, blank=True)
pair = models.ManyToManyField('self', through='Pair',
symmetrical=False,
related_name='pair_to+')
class Pair(models.Model):
requester = models.ForeignKey(Profile, related_name='pairing_requester')
accepter = models.ForeignKey(Profile, related_name='pairing_accepter')
requester_learns = models.CharField(max_length=60, null=True)
requester_teaches = models.CharField(max_length=60, null=True)
Die Beziehung zwischen den Profilen soll, dass symmetrisch sein, so (profile1, profile2) ein einzigartiges Objekt ist, und ich soll ein (profile2 nicht erwarten, profile1) erstellt werden.
Also pro this article, Ich versuche, die Beziehung zu erstellen.
Nach makemigrations
, erhalte ich die Fehlermeldung:
ERRORS:
<function ManyToManyField.contribute_to_class.<locals>.resolve_through_model at 0x1044b47b8>: (models.E022) <function ManyToManyField.contribute_to_class.<locals>.resolve_through_model at 0x1044b47b8> contains a lazy reference to user_profile.pair, but app 'user_profile' doesn't provide model 'pair'.
user_profile.Profile.pair: (fields.E331) Field specifies a many-to-many relation through model 'Pair', which has not been installed.
Was mache ich falsch?
Dann gibt es keine Möglichkeit, sie in verschiedenen models.py-Dateien zu behalten? – Homer
Sie können es behalten, aber Sie müssen zuerst die Tabelle erstellen, bevor Sie es aufnehmen, sonst würde Django nicht verstehen, zu welcher Tabelle es auch Beziehung erstellen wird, da die Tabelle beim Erstellen der Relation – Exprator
nicht existiert Migrationen und Migrieren des Pair-Modells zuerst allein, aber den gleichen Fehler erhalten. Könnte es sich darauf beziehen, das Paarmodell als Zeichenfolge im Profilmodell anzugeben? – Homer