Проверьте, имеет ли любой объект, на который ссылается базовая модель, значение, указанное в django orm

Рассмотрим две модели:

class School(models.Model):
    name = models.TextField(default="hello world")

class Student(models.Model):
    key = models.TextField(default="somedata")
    a = models.ForeignKey(Vendor)

Отношение "многие к одному" между школой и студентом. Как мне получить (с точки зрения школы) все школы, у которых есть ученик, установивший "ключ" в требуемое значение?

Особенно в уже существующем запросе:

School.objects.filter(Q(name="hello world") | Q(queryshould_here))

Я пробовал

A.objects.filter(Q(name="hello world") | Q(student__key="test"))

Однако это (очевидно) не удается при:

django.core.exceptions.FieldError: Unsupported lookup 'key' for ManyToOneRel or join on the field not permitted.

Запрос:

School.objects.filter(Q(name='hello world') | Q(student__key='test'))

should work, given you did not specify a related_quey_name=… [Django-doc] or related_name=… [Django-doc]. If you did, Django will pick the related_query_name=…, and if you did not specify that, the related_name=….

Но ошибка:

Неподдерживаемое lookup 'v' для ManyToOneRel или join по полю не разрешено.

говорит, что вы, таким образом, похоже, используете __v, так что, вероятно, поиск идет неправильно, или вы делаете неправильный JOIN.

Вернуться на верх