【发布时间】:2020-09-16 23:02:29
【问题描述】:
我试图为用户提供在 SomeModel 中存储任意数量或种类的 ExtraParameters 列表的可能性(它可能很小,如 IntegerField、BooleanField 或相当大,如 TextField)。
我尝试实现 ExtraParameter abstract 模型类,它会将 ForeignKey 保留给 SomeModel,它的子类也只有一个参数,例如:
class ExtraParameter(models.Model):
somemodel = models.ForeignKey(SomeModel, ...)
class Meta:
abstract = True
class IntegerExtraParameter(ExtraParameter):
value = models.IntegerField()
我相信它需要多个像这样的小类,因此可以迁移到不同字段的多个数据库表。
我说的对吗?请提供更好的解决方案。也许其他方式来装饰 ExtraParameter 是可能的?
这种方法的问题是在实现模板时,通过 somemodel.extraparameters.all() 获取所有类型的存储参数并不容易,而是 我需要显式调用每个子类并构建从它设置。但我也看到了一个解决方案,可以在应用程序的配置中找到任何类的所有子类,所以它会有所帮助。
雅库布
【问题讨论】:
标签: django database django-models