Фильтрация внешнего ключа модели Django при целочисленной выдаче - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть модель здания с целочисленным полем, указывающим тип здания:

class Building(models.Model):
    building_type = models.PositiveIntegerField('Building Type')

У меня есть модель BuildingUnit со ссылкой на внешний ключ для Building:

class BuildingUnit(models.Model):
    building_fk = models.ForeignKey(
        'Building',
        on_delete=models.CASCADE, verbose_name="Building"
    )

IЯ перезаписываю функцию init модели BuildingUnit и пытаюсь отфильтровать внешние ключи на основе целочисленного значения (типа построения):

self.base_fields['building_fk'].queryset = BuildingUnit.objects.filter
(building_fk__building_type=16)

Не работает.Все типы зданий продолжают возвращаться.Когда я отлаживаю и проверяю оператор SQL, он говорит неверный синтаксис.Предложение WHERE сообщает building.building_type = 16.Это выглядит правильно для меня.Я использую Postgres.Как заставить objects.filter () в Django правильно вычислять целое число в PLPGSQL?

1 Ответ

0 голосов
/ 06 февраля 2019

base_fields - это список всех полей, которые были найдены при выполнении метакласса.Это те поля, которые фактически были объявлены непосредственно в классе, например, оригинальное / глобальное / основное определение.

поля - это те, которые фактически будут использоваться для генерации HTML для формы, так кака также проверить ввод пользователя.Он начинается как копия base_fields , и поля могут использоваться при настройке формы, такой как динамическое добавление новых полей в форму или изменение значений / вариантов существующих полей.

base_fields и поля аналогичны чертежам и фактическим построенным зданиям.План является основным определением.Как только вы внесете изменение, оно станет глобальным и постоянным по своему охвату. поля похожи на дом, который вы строите.Вы можете сделать любое количество домов такого же типа из оригинальной спецификации.Однако вы можете настроить каждый дом отдельно, чтобы каждый из них был уникальным и особенным.

Это не помогло мне, поскольку я не назначал отфильтрованные значения атрибуту field который генерировал фактический вывод HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...