2017-12-05 7 views
0

Ich versuche, Django User-Modell mittels eines Actor-Modells zu erweitern, aber ich bekomme einige Probleme.Django OneToOneField Unique scheitert beim Erweitern Benutzermodell

Es ist mein Code:

class Actor(models.Model): 
    usuario = models.OneToOneField('auth.User', unique = True, null = True) 

    def __str__(self): 
     return self.usuario.get_full_name() + ' (' + self.usuario.get_username() + ')' 

Das Problem ist, dass eine Eins-zu-Eins-Beziehung nicht eindeutig zuzuordnen sind, so kann ich zwei differents Schauspieler erstellen und diese mit dem gleichen Benutzer beziehen.

Use-Case-Idee: Ich erstelle einen Benutzer (Benutzermodell von Django) dann erstelle ich einen Schauspieler und verbinde ihn mit dem Benutzer, den ich zuvor erstellt habe. Wenn ich einen zweiten Akteur erstelle, müsste es nicht möglich sein, ihn mit demselben Benutzer zu verbinden.

+1

_Das Problem ist, dass Eins-zu-Eins-Beziehung nicht eindeutig ist, so dass ich zwei differents aktors_ erstellen kann Dann keine One-to-One-Beziehung verwenden, das ist genau, was es gemeint ist. – scharette

+0

_Two differents Akteure (oder mehr) verwandt mit dem gleichen User_, wenn ich versuche, die Beziehung zu Eins-zu-eins zu beschränken (ein Benutzer ist nur mit einem Akteur verwandt und umgekehrt). –

+0

Das ist, was eine Eins-zu-Eins-Beziehung ist. Es * ist * einzigartig, und Sie * können einen Akteur nicht mit mehr als einem Benutzer in Beziehung setzen. Was lässt dich denken, dass du kannst? –

Antwort

0

Ich würde vorschlagen, Sie verwenden ForeignKey mit unique=True.

+0

Ich habe versucht, aber es hat das gleiche Verhalten, dass eins-zu-eins-Beziehung: ein Benutzer kann mit mehr als einem Akteur verwandt sein. –

Verwandte Themen