Я пытаюсь отфильтровать таблицу в Django на основе значения определенного поля ForeignKey
.
Например, у меня две модели:
class Asset(models.Model):
name = models.TextField(max_length=150)
project = models.ForeignKey('Project')
class Project(models.Model):
name = models.TextField(max_length=150)
Я хочу отфильтровать свой список активов на основе имени связанного проекта.
В настоящее время я выполняю два запроса:
project_list = Project.objects.filter(name__contains="Foo")
asset_list = Asset.objects.filter(desc__contains=filter,
project__in=project_list).order_by('desc')
Мне интересно, есть ли способ указать такую фильтрацию в основном запросе?
django
django-models
django-queryset
Фрейзер Грэм
источник
источник
contains
описывает тип сравнения, используемый в запросе, который производит ORM django, sql, вероятно, будет выглядеть такLIKE '%Foo%'
.Это стало возможным с тех пор, как
queryset-refactor
ветка вышла до версии 1.0. Билет 4088 выявил проблему. Это должно работать:В документации Django Many-to-one есть этот и другие примеры отслеживания внешних ключей с использованием API модели.
источник
В моем приложении, приведенном выше, я предполагаю, что после зачисления студента будет создан экземпляр SubjectGrade объекта, который будет содержать зарегистрированный объект и самого студента.
Модель Subject и Student User - это внешний ключ к модели SubjectGrade.
В «available_subjects» я исключил все предметы, которые уже зарегистрированы текущим student_user, проверив все экземпляры subjectgrade, у которых есть атрибут «student» как текущий student_user.
PS. Заранее приносим свои извинения, если вы все еще не можете понять из-за моего объяснения. Это лучшее объяснение, которое я могу дать. огромное спасибо
источник