2017-10-09 9 views
0

Ich versuche derzeit, meine Django-Modelle für die folgenden Situationen zu entwerfen: Ich habe eine Klasse, die Benutzer heißt und jeder Benutzer hat eine eindeutige Benutzer-ID. Jetzt möchte ich eine Rangliste erstellen, basierend auf den Münzen, die ein Benutzer hat. Ich möchte jedoch nur Benutzer, die Freunde sind, für den Benutzer sichtbar machen, wenn der Benutzer das Ranking anzeigt.Viele zu viele Beziehung in Django-Modell

Deshalb definiere ich eine Klasse Friends, die ein ManytoMany-Feld "isfriend" enthält, das alle Benutzer-IDs enthält, mit denen der Benutzer befreundet ist. Ich glaube jedoch, dass die Art, wie ich das versuche, nicht der beste Weg ist. Irgendwelche Vorschläge, wie ich das umsetzen soll?

class User(models.Model): 
    userid = models.CharField(max_length=26,unique=True) 
    coins = models.IntegerField() 

def __str__(self): 
    return self.userid 

class Friends(models.Model): 
    isfriend = models.ManytoManyField(User) 

    def __str__(self): 
     return self.isfriend 
+0

Warum fügen Sie Ihrem Benutzer nicht einfach ein 'Freunde'-Feld hinzu, und es hat eine ManytoMany-Beziehung? – Fcmam5

+0

der Grund war, weil ich nicht sicher war, dass es in der gleichen Tabelle arbeiten würde. Also könnte ich einfach nur Freunde = models.ManytoManyField (User) zur Benutzertabelle hinzufügen und es wäre alles gut? – robjeiter

+0

Ersetzen Sie einfach '(User)' durch ''self'', ich meine' Freunde = models.ManyToManyField (' self ') ' – Fcmam5

Antwort

4

Benutzer hat viele Benutzer (Freunde), ist es eine Lösung wie gibt:

class User(models.Model): 
    userid = models.CharField(max_length=26,unique=True) 
    coins = models.IntegerField() 
    friends = models.ManyToManyField('self') 

    def __str__(self): 
     return self.userid 

Sorry für mein schlechtes Englisch.

+0

eine weitere Frage. Wie würde ich in diesem Fall dieses Viele-zu-Viele-Feld bevölkern? user = User.objects.get (userid = id) friendsid = "101" user.friends.add (friendsid) Arbeit scheint nicht. Es gibt mir django.db.utils.DataError: Ganzzahl außerhalb des Bereichs – robjeiter