Django模型继承 - 查询“未知”关系

时间:2017-12-28 22:51:46

标签: python django inheritance model

以下面的例子为例:

class Manufacturer(models.Model):
    name = models.CharField(max_length=200, blank=False)
    slug = models.SlugField(max_length=200, blank=False, unique=True)


class Category(models.Model):
    name = models.CharField(max_length=200, blank=False)
    slug = models.SlugField(max_length=200, blank=False, unique=True)


class Product(models.Model):
    category = models.ForeignKey(Category, related_name='products')
    manufacturer = models.ForeignKey(Manufacturer, related_name='products')
    name = models.CharField(max_length=50, blank=False)
    slug = models.SlugField(max_length=200, blank=False, unique=True)

class CarMixin(models.Model):
    color = models.CharField(max_length=50, blank=False)
    num_wheels = models.IntegerField()

class CellPhoneMixin(models.Model):
    screen_size = models.IntegerField()

class Car(Product, CarMixin):
    pass


class Food(Product):
    pass


class CellPhone(Product, CellPhoneMixin):
    pass

我要做的是创建一个名为Product的“基础”类,并使用Model Inheritance应用各种“子产品类型”。

我没有使用Django的“抽象模型继承”的原因是因为我实际上希望我的数据库中有一个表来容纳所有产品,因此我可以像Product.objects.all()这样的查询来获取所有产品,然后键入product.car以获取相关Car对象的所有字段值。

但是,我遇到的问题是产品可能与CarFoodCellPhone中的任何一个产生关系。因此,如果product.carFood有关系,我就无法Car。无法知道Product对象具有哪种“关系”。它与Food有关吗? CellPhonezend_extension="${PHP_PATH}ext\php_xdebug-2.5.5-7.1-vc14-nts.dll"

我该如何处理?我应该使用更好的数据库模式吗?

0 个答案:

没有答案