【发布时间】:2021-05-29 08:30:36
【问题描述】:
我有一个抽象基类,许多模型都从该基类继承。它定义了一个名为order 的字段。我已将其内置到系统中,因为我经常需要以任意方式对我的对象进行排序(例如,用于在模板中列出)。但是,我经常发现订单字段离我而去,我迷失了方向(我允许null=True 和blank=True)。我想有一种方法来确保每当创建具有顺序的模型类型的对象时,Django 都会查看相同类型的其他对象并检查最高顺序号并相应地递增。
这可能吗?我尝试使字段order 自动递增(使用AutoField),但Django 抱怨说我已经有一个自动字段,即主键。我会使用主键 ID,但这是任意分配的,不会保持我想要的顺序。
这里是存放相关模型的模型工厂:
def abstract_base_model_factory():
class AbstractBaseModel(models.Model):
order = models.IntegerField(null=True, blank=True)
class Meta:
abstract = True
return AbstractBaseModel
【问题讨论】:
标签: django django-models abstract-class