2014-03-24 3 views
0

내가 할 수 있기를 원하는 것은이 의사 코드와 유사합니다. 파이썬에서이 작업을 수행하는 방법을 완전히 알지 못합니다 :쿼리 세트의 객체가 ManyToMany 관계에 있는지 확인

user_groups = request.user.participant_groups.all() 
    if group in user_groups not in self.object.settings.groups.all(): 

기본적으로 user_groups의 개체가 self.object.settings.groups.all()에 있는지 확인하고 싶습니다. 이 작업을 수행하는 간단한 방법이 있습니까?

모델 : 내가 할 노력하고있어

class Group(models.Model): 
    participants = models.ManyToManyField('auth.User', null=True, blank=True, related_name='participant_groups') 
    title = models.CharField(max_length=180) 
    date = models.DateTimeField(null=True, blank=True, editable=False) 
    modified = models.DateTimeField(null=True, blank=True, editable=False) 

class Settings(models.Model): 
    user = models.ForeignKey('auth.User', related_name='settings_objects') 
    groups = models.ManyToManyField('groups.Group', null=True, blank=True) 
    participants = models.ManyToManyField('auth.User', null=True, blank=True, related_name='accessible_objects') 
    private = models.BooleanField(default=True) 

사용자의 participant_groups (그룹 모델에 대한 사용자의 관계를 역)의이 설정에 있는지 확인입니다 그룹에게 manytomany 관계를 객체.

common_groups = user.participant_groups.annotate(
    num_settings=Count('settings_objects') 
).filter(num_settings__gt=0) 

# You can get a count like this 
count_of_above = common_groups.count() 

내가 self.object.settings 있으리라 믿고있어 현재 사용자에 대한 Settings의 인스턴스 -

+0

manytomany 관계에 대한 Django 문서를 읽었습니까? –

+0

@Bibhas 예, 있습니다. 나에게 구체적으로 도움이 될만한 게있어? –

+0

생각하지 마십시오. 그것은 ManyToMany 관계 문서에서 그것과 함께'IN' 질의를하는 방법을 설명합니다. 'self.object.settings.groups.all()'은 무엇입니까? queryset? 사전? 목록? –

답변

0

이하는보십시오. 당신은 분명히해야합니다.

+0

'request.user.participant_groups.all()'은 아직 iterable이 아닙니다. settings_with_groups_in_users_participant_groups = Settings.objects.filter ( user = request.user, groups__in = request.user.participant_groups.all() ) – Kracekumar

+0

예입니다. '__in'이 querysets을 사용하는지 확실하지 않았습니다. 그냥 확인 됐어. 감사합니다 –

+0

@ kracekumar하지만 의사에 따르면 바람직하지 않습니다. ID 목록을 추출하고 전달하는 것이 더 낫습니다. https://docs.djangoproject.com/ko/1.7/ref/models/querysets/#in –