首页 > 解决方案 > 创建子类不重复匹配字段

问题描述

我在 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

标签: pythondjango

解决方案


我认为您正在尝试找出abstract模型类。

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

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

推荐阅读