2012-05-04 4 views
0

Привет, я не очень хорошо разбираюсь в английском, но я попытаюсь объяснить себе, что я могу. Я использую python и Django для создания веб-проекта. У меня это 4 моделей (это лучший перевод я могу сделать из таблиц и полей):Фильтрация QuerySet с помощью другого QuerySet

class Humans (models.Model): 
    name = models.CharField(max_length=15) 
    surname = models.CharField(max_length=15) 
    doc_num = models.CharField(max_length=11) 
    ... 

class Records (models.Model): 
    closing_state = models.CharField(max_length=2) 
    ... 
    humans = models.ManyToManyField(Humans, through='Reco_Huma') 

class Reco_Huma (models.Model): 
    id_record = models.ForeignKey(Records) 
    id_human = models.ForeignKey(Humans) 
    categorys = models.CharField(max_length=2) 
    reserv_identity = models.CharField(max_length=2) 
    repre_entity = models.CharField(max_length=2) 


class Observations (models.Model): 
    id_record = models.ForeignKey(Records) 
    text = models.CharField(max_length=80) 
    category = models.CharField(max_length=2, choices=CAT) 

Теперь дан doc_num от людей, текст из наблюдений я хочу, чтобы получить QuerySet всех записей ,

Для уточнения я первым сделать это:

q1 = Reco_Huma.objects.filter(id_human.doc_num=x) 
q2 = Observations.objects.filter(text=y) 

оба запроса наборы дают мне список id_record, а затем я хочу потакать, что списки и фильтрации записей таблицы с этим id_record-х

Я надеюсь, вы можете понять меня

заранее спасибо

+0

Что именно вы надеетесь достичь из своих запросов? – zsquare

ответ

1

Чтобы перефразировать ваш запрос, вы хотите, чтобы все отчеты, связанные с определенным человеком и который имеют определенное Наблюдение. Так оно и должно быть:

result = Records.objects.filter(observations__text=y, humans__doc_num=x) 

Как правило, если вы хотите, чтобы в конечном итоге с определенным типом объекта, это помогает начать оттуда в запросе.

Смежные вопросы