Django-如何从继承同一抽象类的多个模型中创建TableView?
我正在尝试创建一个TableView,它显示项目中继承自同一抽象类的所有对象。我知道我可能需要使原始类不抽象,但项目已经在运行,我现在不想更改模型 抽象类是这样的:Django-如何从继承同一抽象类的多个模型中创建TableView?,django,Django,我正在尝试创建一个TableView,它显示项目中继承自同一抽象类的所有对象。我知道我可能需要使原始类不抽象,但项目已经在运行,我现在不想更改模型 抽象类是这样的: class WarehouseBase(models.Model): region = models.ForeignKey(Region, on_delete=models.PROTECT, null=True, blank=False, verbose_name='Región') name = models.Ch
class WarehouseBase(models.Model):
region = models.ForeignKey(Region, on_delete=models.PROTECT, null=True, blank=False, verbose_name='Región')
name = models.CharField(max_length=50, verbose_name='Nombre', unique=True)
class Meta:
abstract = True
从中继承的类有:
class SaleWarehouse(WarehouseBase):
TYPES = (
(0, 'Autotanque'),
(1, 'Estación de carburación')
)
type = models.IntegerField(choices=TYPES, null=False, blank=False, verbose_name='Tipo')
# price = models.ForeignKey(SpecificPrice, on_delete=models.SET_NULL, null=True, blank=True, related_name='warehouse')
lat = models.DecimalField(max_digits=9, decimal_places=6, null=True)
lng = models.DecimalField(max_digits=9, decimal_places=6, null=True)
price = models.FloatField(verbose_name='Precio', validators=[MinValueValidator(0.0), MaxValueValidator(1000.0)], null=True, blank=True)
price_date = models.DateField(verbose_name='Fecha de precio', null=True, blank=True, auto_now_add=True)
def __str__(self):
return '{} - {}'.format(str(self.pk), self.name)
class GeneralWarehouse(WarehouseBase):
@property
def total_capacity(self):
capacity = 0.0
for tank in self.tanks:
capacity += tank.max_capacity
return capacity
def __str__(self):
return "Almacén general '{}'".format(self.name)
刚刚添加了登记所有仓库的视图的新要求,但在创建项目时,并不需要这样做。我一直在搜索,并找到了更改数据库模型的方法,这样我就可以对WarehouseBase对象进行查询集,但这需要对数据库进行许多更改,这将是非常危险的,因为一些功能依赖于这些模型
有没有一种方法可以让TableView显示所有SaleWarehouse和GeneralWarehouse对象,而不更改模型?您可以创建对象列表或字典,并从SaleWarehouse和GeneralWarehouse这两个模型中添加对象。通过这种方式,您可以将两个模型中的数据合并到一个列表中,而无需对数据库进行任何更改。您使用的是哪个版本的Python?