2

我正在尝试使用 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")

p2p1联系人列表中也是如此。如何使用 django ORM 进行此查询?

4

1 回答 1

2

正确的解决方案是:

> Participant.objects.filter(contact__in= p1.contacts.all())
于 2013-06-14T10:39:26.497 回答