ich mit einem Django-Modell arbeite, die wie folgt aussieht:Kann ich ein OneToOneField erstellen, das ein Objekt erstellt, wenn es nicht existiert?
class Subscription(models.Model):
user = models.OneToOneField(User)
Das heißt, es hat eine Eins-zu-Eins-Verbindung mit der User
Klasse von auth
Moduls Django. Diese Zuordnung ist nicht optional. aber dank einigen Legacy-Code und einige manuellen Bastelei mit der Datenbank gibt es Fälle, in denen ein Nutzer nicht hat ein zugehöriges Abonnement, die diesen Code wie folgt heißt:
sub = user.subscription
eine DoesNotExist
Ausnahme auslösen . Viele der Codebasis gehen jedoch davon aus, dass jedem Benutzer ein Subscription
Objekt zugeordnet ist.
Gibt es eine Weise, die ich Unterklasse könnte OneToOneField
, so dass, wenn das zugehörige Subscription
Objekt in der Datenbank nicht vorhanden ist, und ich habe schaffen und senden Sie es, wenn user.subscription
genannt wird, anstatt eine Ausnahme zu werfen?
Dies vor allem für ältere geschieht (bestehende) 'Benutzer So wird ein 'post_save'-Signal nicht unbedingt vor der Dereferenzierung des zugehörigen Subskriptionsobjekts ausgelöst. – mipadi
Eine einzelne Abfrage kann mit allen Legacy-Benutzern umgehen. –