DJANGO - 元/变量 db_table 类

问题描述 投票:0回答:1

我想在我的元类中获取一个变量

    class Meta:
        abstract = True
        db_table = 'bikes_table'
        managed = False

我想从

self
获取一个变量,就像上面一样:

    class Meta:
        abstract = True
        db_table = 'bikes_table' if self.customers=True else 'cars_table'
        managed = False

是否可以获取变量?

django variables metaclass
1个回答
0
投票

正如评论中所述,表面问题是“self”在类定义时不可用,当然。

元数据中的某些字段可能具有在运行时可以更改的值,对于每个实例,这些字段将接受回调函数而不是静态值(但查看文档,似乎没有)

现在,某个Model对应的表被ORM使用,并且会在类级别进行绑定。更重要的是,因为许多处理类的查询必须发出数据库语句没有实例,就像任何查询的情况一样。 我的意思是,在您的示例中,

vehicle.objects.all()
必须查询两个数据库表并将结果放在同一响应中。

可以通过子类化 Django 的内部 Queryset 数据库来完成,并仔细重写它以自定义方式查看“表”模型元数据,但这很容易出错。 所以,你宁愿重新考虑你的设计。 简单地拥有一个 Vehicle 基类会更容易,只需在表单和关系上使用“Vehicle”,并从中派生出 Bicycle 和 Car 类 - 只要有车辆,就可以使用汽车或自行车。 Django 通过

Genericrelations

为关系本身提供支持

© www.soinside.com 2019 - 2024. All rights reserved.