DJANGO-类Meta / varibales db_table

问题描述

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

    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

是否有可能获取变量? 谢谢

解决方法

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

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

现在,ORM使用与某个Model对应的表,并将其绑定到类级别。令人怀疑的是,因为与类有关的许多查询都必须发出没有实例的数据库语句,就像任何 query 一样。我的意思是,在您的示例中,vehicle.objects.all()必须查询两个数据库表并将结果汇​​总到相同的响应中。

可以通过子类化Django内部Queryset数据库,并仔细地重写它以自定义方式查看“表”模型元数据来完成,但这很容易出错。 >

因此,您宁愿重新考虑您的设计。简单地具有“车辆”基础类,仅在表格和关系上使用“车辆”,并从中派生“自行车”和“汽车”类,就更容易了-可以在任何车辆可以使用的地方使用汽车或自行车。 Django通过Generic Relations

为关系本身提供支持