Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.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
Python 创建子类以不重复匹配字段_Python_Django - Fatal编程技术网

Python 创建子类以不重复匹配字段

Python 创建子类以不重复匹配字段,python,django,Python,Django,我在Django中创建了两个类模型。有没有办法不重复将相同的匹配字段存储在不同的类或变量中 这就是我得到的: class Post(models.Model): title = models.CharField(max_length=50) content = RichTextField(blank=True) category = models.ForeignKey(Category, verbose_name="Category", on_delete=models.

我在Django中创建了两个类模型。有没有办法不重复将相同的匹配字段存储在不同的类或变量中

这就是我得到的:

class Post(models.Model):
    title = models.CharField(max_length=50)
    content = RichTextField(blank=True)
    category = models.ForeignKey(Category, verbose_name="Category", on_delete=models.CASCADE)
    posted_by = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
    slug = models.SlugField(null=True, unique=True, editable=False)

    def __str__(self):
            return str(self.category) + self.slug + " " + str(self.id)

    def save(self, *args, **kwargs):
        self.slug = slugify(str(self.category)) + "/" + slugify(self.title+str(-self.id))
        super(Post, self).save(*args, **kwargs)

    def __str__(self):
        return self.title

class Post2(models.Model):
    title = models.CharField(max_length=50)
    content = RichTextField(blank=True)
    category = models.ForeignKey(Category, verbose_name="Category", on_delete=models.CASCADE)
    posted_by = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
    slug = models.SlugField(null=True, unique=True, editable=False)

    def __str__(self):
            return str(self.category) + self.slug + " " + str(self.id)

    def save(self, *args, **kwargs):
        self.slug = slugify(str(self.category)) + "/" + slugify(self.title+str(-self.id))
        super(Post2, self).save(*args, **kwargs)

    def __str__(self):
        return self.title

我想你是想找出原因

您可以通过在模型的
类中设置
abstract=True
来创建抽象模型类

class AbstractPost(models.Model):
    title = models.CharField(max_length=50)
    # common fields and functions

    class Meta:
        abstract = True


class Post(AbstractPost): # inherit the abstract base class
    pass


class Post2(AbstractPost):
    pass
class AbstractPost(models.Model):
title=models.CharField(最大长度=50)
#公共字段和函数
类元:
抽象=真
类Post(AbstractPost):#继承抽象基类
通过
二级职位(抽象职位):

通过
我想你是想找出答案

您可以通过在模型的
类中设置
abstract=True
来创建抽象模型类

class AbstractPost(models.Model):
    title = models.CharField(max_length=50)
    # common fields and functions

    class Meta:
        abstract = True


class Post(AbstractPost): # inherit the abstract base class
    pass


class Post2(AbstractPost):
    pass
class AbstractPost(models.Model):
title=models.CharField(最大长度=50)
#公共字段和函数
类元:
抽象=真
类Post(AbstractPost):#继承抽象基类
通过
二级职位(抽象职位):

pass
谢谢,如果函数引用这样的模型,是否也有一种方法可以传递函数
super(Post,self)
此模型继承与任何其他Python类一样,这意味着您可以使用
super()
方法访问父类的方法。抽象模型类中唯一的区别是该模型不会用于创建任何数据库表。相反,当它被用作其他模型的基类时,它的字段将被添加到子类的字段中。谢谢,如果函数像这样引用模型,是否有一种传递函数的方法
super(Post,self)
此模型继承与任何其他Python类一样,这意味着您可以使用
super()
method访问父类的方法。抽象模型类中唯一的区别是该模型不会用于创建任何数据库表。相反,当它用作其他模型的基类时,它的字段将添加到子类的字段中。