Проверьте, имеет ли любой объект, на который ссылается базовая модель, значение, указанное в 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.