Python 使用Django ORM多对多字段进行查询

Python 使用Django ORM多对多字段进行查询,python,sql,django,orm,Python,Sql,Django,Orm,我正在尝试使用Django ORM查询我的bd,但我需要一些帮助 型号: class Participant(models.Model): username = models.CharField(max_length=20) username.primary_key = True #password = models.CharField(max_length=128) work_place = models.CharField(max_length=50)

我正在尝试使用Django ORM查询我的bd,但我需要一些帮助

型号:

class Participant(models.Model):
    username = models.CharField(max_length=20)
    username.primary_key = True
    #password = models.CharField(max_length=128)
    work_place = models.CharField(max_length=50)
    photo = models.FileField(upload_to='user_photo')
    name = models.CharField(max_length=30)
    country = models.CharField(max_length=20)
    phone_number = models.IntegerField(max_length=9)
    email = models.EmailField(unique = True)
    qrcode = models.FileField(upload_to = 'qrcodes',null=True,blank=True)
    contact = models.OneToOneField('Contact', related_name= 'participant_contact')
    user = models.OneToOneField(User)  
    contacts = models.ManyToManyField('Contact', related_name='contact_list', null=True, blank=True)


    def save( self, *args, **kw ):
        self.username = self.user.username
        c= Contact()
        c.save()
        self.contact = c
        super( Participant, self ).save( *args, **kw )

    def __unicode__(self):
        return self.username

class Contact(models.Model):
    id = models.AutoField(primary_key=True)
我需要获取给定参与者的所有联系人

例如:

Contact Table: |  id   |
               |_______|    
               | 1     |  
               | 2     | 

Participant Table: |username|...|participant_contact|
                   |_______ |___|___________________|                  
                   | test   |   |       1           |
                   | test2  |   |       2           |

Contacts Relation: |id_Participant1|id_participant_2|
                   |_______________|________________|                  
                   | 1             | 2              |


> p1 = Participant.objects.get(username="test")
> p2 = Participant.objects.get(username="test2")

因此,
p2
p1
联系人列表中。如何使用django ORM进行此查询?

正确的解决方案是:

> Participant.objects.filter(contact__in= p1.contacts.all())