Python 创建子类以不重复匹配字段
我在Django中创建了两个类模型。有没有办法不重复将相同的匹配字段存储在不同的类或变量中 这就是我得到的: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.
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访问父类的方法。抽象模型类中唯一的区别是该模型不会用于创建任何数据库表。相反,当它用作其他模型的基类时,它的字段将添加到子类的字段中。