2015-04-07 3 views
-1

В моем приложении Django у меня есть две модели, и я не знаю, как сделать запрос для выбора правильной записи. Это код:Фильтр Django queryset из двух моделей

class tab1 (models.Model): 
    id_tab1 = models.AutoField(primary_key=True) 
    name = models.CharField(max_length=50) 

class tab2 (models.Model): 
    id_tab1 = models.ForeignKey(tab1) 
    type = models.IntegerField() 

Я хотел бы выбрать записи tab1, у которых tab2.type равно определенному условию. Как я могу это сделать в Django?

ответ

1
your_queryset = tab1.objects.filter(tab2__type=value) 

Смотрите соответствующую документацию here В нескольких словах: вы можете охватить отношения либо способом (т.е. с каждого конца внешнего ключа). Условие указано в названном аргументе для фильтра(). Тот, который я предложил выше, является самым простым (т. Е. Равенство), но есть еще немало (например, startswith, contains и т. Д.). Пожалуйста, прочитайте here

0

У вас есть значения 1,2, сохраненные для поля type. Ниже проиллюстрирован один из способов достижения вашей потребности в type=1.

filtered_objs = tab1.objects.filter(type=1) 
tab2.objects.filter(tab1__in=filtered_objs) 
+0

Вы можете улучшить свой ответ с помощью описания того, что делает, как оно предназначено для использования и, возможно, ссылки на документацию? (Я подозреваю, что на второй строке тоже есть опечатка) – Tensibai

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