2016-08-31 2 views
0

seltsamsten Fehler verbinde ich jemalsDjango: Random ManyToMany Beziehung wird auf Benutzer hinzugefügt

User-Modell ist die regelmäßige ein von conrtib.auth.User

des angetroffen Lassen Sie sagen, ich folgendes Modell haben:

class Region(model.Model): 
    name = models.CharField(max_length=256) 
    rakazim = models.ManyToManyField(settings.AUTH_USER_MODEL) 
    goal = models.IntegerField(default=0) 

und woanders habe ich noch:

user_model = get_user_model() 
rakaz = user_model.objects.create_user(username, email, password) 

Dann sofort nach th e Benutzer-Erzeugungsverfahren wird die „rakaz“ Instanz aufgerufen hat eine zufällige Region

verbunden
rakaz.region_set.all() = [<random_region>] 

sie auch auf einem anderen Modell verbindet manchmal, dass ein ähnlicher ManyToManyField zu AUTH_USER_MODEL

I mit PDB in die Benutzererstellungsmethode debuggt hat (in auth contrib) und sofort nach dem Aufruf von save geschieht dies.

AFAIK kommt es nur auf dem Testserver, aber bis ich den Grund finde ich habe Angst, prod einzusetzen ..

Django Version 1.84. Server mit Mariabdb auf RDS

Ich benutze keine Signale in meinem Code (und überhaupt :)) und kann keine relevanten Drittanbieter-Code dabei finden, (Und wenn ja, es würde auch auf meinem Rechner passieren)

Irgendwelche Ideen?

Antwort

0

Die Frage stellte sich heraus zu sein: ich den Staging-Server mit Daten aus prod ausgesät für „Region“ der dumpdata Befehl region mit Fremdschlüssel für rakazim Dumps. Aber da die Benutzer tatsächlich vermisst wurden (ich habe die Benutzer nicht aus meiner Prod-Umgebung kopiert) Anstatt mich anzuschreien und mir nicht loaddata mit nicht existierenden Fremdschlüsseln zu erlauben, wählte mariadb mich zu geben: +1 und zufüge zufällig fremd Schlüssel jedes Mal, wenn ich einen Benutzer erstellt habe (vielleicht nicht zufällig, aber nach dem importierten Mapping, nicht sicher).

Lektion gelernt: Verwenden Sie eine ordnungsgemäße DBMS und nicht eine MySQL-Variante.

Verwandte Themen