2017-01-19 5 views
1

haben ein Modell "Benutzer" und "Match", dieses zweite Modell wird verwendet, um immer 2 Benutzer zu verbinden. Ich versuche, nach einem "Match" zu suchen, das die zwei spezifischen Benutzer hat.Holen Sie einen Datensatz in exakten ManyToManyField

Die ursprüngliche Idee war, update_or_create zu verwenden, ich entdeckte, dass es nicht möglich war. Also ging ich zu get_or_create, aber jetzt habe ich einen einfachen Filter ausprobiert.

Die maximal Ich habe ist, den Wert des Spiels Modells zu wiederholen (2 Ergebnisse mit dem gleichen Wert erhalten)

-Test 1

query = reduce(operator.or_, (Q(users__user__uuid=item) for item in LIST)) 
result = Match.objects.filter(query) 

Count: 0

-Test 2

test = Match.objects.filter(users__user__in=LIST)) 

Count: 0

-Test 3

test = Match.objects.filter(users__in=LIST) 

Count: 2 (dupliziert)


LIST = FUNKTION:

def list_uuid(user1, user2): 
    return {str(user.uuid), str(user2.uuid)} 

Antwort

1

Try this:

qs = Match.objects.filter(uuid__in=user1.matches.all(), users=user2) 
Verwandte Themen