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")

連絡先リストp2も同様です。p1django ORM でこのクエリを作成するにはどうすればよいですか?

4

1 に答える 1

2

正しい解決策は次のとおりです。

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