Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-如何从继承同一抽象类的多个模型中创建TableView?_Django - Fatal编程技术网

Django-如何从继承同一抽象类的多个模型中创建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

我正在尝试创建一个TableView,它显示项目中继承自同一抽象类的所有对象。我知道我可能需要使原始类不抽象,但项目已经在运行,我现在不想更改模型

抽象类是这样的:

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?