Mám tabuľku s názvom skupiny. Chcem vrátiť číslo skupiny, ktorej súčasťou sú iba John a Mary.
Popremýšľajte o aplikácii na rozhovor, chcem zistiť, či títo dvaja existujúci ľudia už majú skupinu iba IBA s nimi.
Group | user
1 | john
1 | mary
1 | dave
2 | john
2 | mary
Ako to môžem urobiť?
Tu je skutočný model
class Conversation(models.Model):
attendee = models.ManyToManyField(User)
guid = models.CharField(max_length=16)
odpovede:
1 pre odpoveď č. 1Odpoveď založená na prístupe @arocks, pretože anotácia @rocks je nesprávna.
Conversation.objects.annotate(user_count=Count("attendee")).filter(user_count=2, attendee__username="john").filter(attendee__username="mary")
To vám vráti sadu dotazov Conversation
objekty, ktoré majú 2 členov a členov sú mary a john
Dôvod, prečo musíte byť 2 samostatné filter
to znamená, že váš systém na správu databáz musí vytvárať dočasné podtabuľky, pretože musíte použiť rovnaký databázový stĺpec username
dvakrát na filtrovanie. Vaše údaje