如何从Django的基类访问子类中的所有字段?

时间:2018-09-25 15:01:53

标签: python django

这是我的模特。py

class Parent(models.Model):
    start_date = models.CharField(max_length=60)
    last_date  = models.CharField(max_length=60)
    post_name  = models.CharField(max_length=255)
    education  = models.CharField(max_length=255)
    more_info  = models.TextField()
    type       = models.IntegerField()

    abstract = True

    def __str__(self):
        return "Upsc Jobs"

class Child(Parent):

    def __str__(self):
        return "Ssc Jobs"

在这里,我如何从父级访问所有字段 迁移时在子类中上课。

当我用mysql databse这样做时。它只是在创造 儿童的一个字段,即Parent_ptr_id

谢谢..

1 个答案:

答案 0 :(得分:1)

abstract = True应该在class Meta内部:

class Parent(models.Model):
    start_date = models.CharField(max_length=60)
    last_date  = models.CharField(max_length=60)
    post_name  = models.CharField(max_length=255)
    education  = models.CharField(max_length=255)
    more_info  = models.TextField()
    type       = models.IntegerField()

    class Meta:
        abstract = True

    def __str__(self):
        return "Upsc Jobs"


class Child(Parent):

    def __str__(self):
        return "Ssc Jobs"

但仍然,您应该能够访问Child对象上Parent类的所有字段,就像Willem的回答一样。

但是,对于迁移部分,abstract = True的正确用法应该可以满足您的要求。参见this进行澄清。