在同一个管理页面上使用两个模型

时间:2016-05-08 15:53:05

标签: python django

我两天都在寻找如何制作它,而我发现的另一个问题不是我的问题。 我有3个型号:

class ProductBase(models.Model):
    title = models.CharField(max_length=50) # and some code
class Serie(models.Model):
    #some specific fields
    productbase = models.OneToOneField(ProductBase, on_delete=models.CASCADE)
class Movie(models.Model):
    #some specific fields
    productbase = models.OneToOneField(ProductBase, on_delete=models.CASCADE)

管理员向我展示了ProductBase模型的创建/编辑表单,一个用于Serie模型,一个用于电影模型。但是我想为Serie / ProductBase Model展示一个Create / Edit Form,为Movie / ProductBase Model展示一个,所以创建一个serie,我创建一个ProductBase和一个Serie Model,以及它们之间的关系。我使用Inlines但是,对于de ProductBase而言,我无法使用不同的AdminModel和Inlines对ProductBAse进行两次注册。 另一种方式是打破两个型号Serie和Movie中的ProductBase,但这是一个糟糕的设计。 谢谢你的帮助 对不起我的英文

1 个答案:

答案 0 :(得分:2)

我认为抽象模型正是您所寻找的。

例如:

class AbstractProductBase(models.Model):
    title = models.CharField(max_length=50)

    class Meta:
        abstract = True


class Serie(AbstractProductBase):
     # some specific fields


class Movie(AbstractProductBase):
    # some specific fields

来源:https://docs.djangoproject.com/en/1.9/topics/db/models/#abstract-base-classes