Django模型外键过滤整数问题

时间:2019-02-06 17:34:38

标签: django postgresql django-models foreign-keys

我有一个带有整数字段的建筑物模型,用于指示建筑物的类型:

byte

我有一个BuildingUnit模型,其中外键指向Building:

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

我要覆盖BuildingUnit模型的 init 函数,并尝试基于整数值(建筑物的类型)来过滤外键:

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

它不起作用。所有建筑类型都将继续出现。当我调试和检查SQL语句时,它说语法无效。 WHERE子句显示building.building_type = 16。在我看来不错。我正在使用Postgres。如何使Django中的objects.filter()在PLPGSQL中正确评估整数?

1 个答案:

答案 0 :(得分:0)

base_fields 是执行元类时发现的所有字段的列表。这些是实际上直接在类上声明的字段,例如原始/全局/主要定义。

字段是实际上将用于生成表单HTML以及验证用户输入的字段。它以 base_fields 的副本开头,并且在进行表单自定义时可以使用 fields ,例如向表单动态添加新字段或更改表单的值/选择。现有字段。

基本字段字段类似于蓝图和实际建造的建筑物。蓝图是主要定义。在此进行更改后,更改将是全局的,并且是持久的。 田地就像您建造的房屋。您可以根据原始规格制造任意数量的同类房屋。但是,您可以对每所房屋进行定制,以使每座房屋都独一无二。

这对我没有用,因为我没有将过滤后的值分配给生成实际HTML输出的 field 属性。