我想创建一个models.Model类,它不会成为数据库的一部分,而只是其他模型的接口(我想避免重复代码)。
类似的东西:
class Interface(models.Model):
a = models.IntegerField()
b = models.TextField()
class Foo(Interface):
c = models.IntegerField()
class Bar(Interface):
d = models.CharField(max_length='255')
所以我的数据库应该只有Foo(带a,b,c列)和Bar(带a,b,d),但不能有表接口。
答案 0 :(得分:10)
当您想要将一些公共信息放入许多其他模型时,抽象基类非常有用。编写基类并将
abstract=True
放在Meta类中。然后,此模型不会用于创建任何数据库表。相反,当它被用作其他模型的基类时,它的字段将被添加到子类的字段中。
答案 1 :(得分:1)
您可以像这样定义类:
from django.db import models
class CommonInfo(models.Model):
name = models.CharField(max_length=100)
age = models.PositiveIntegerField()
class Meta:
abstract = True
class Student(CommonInfo):
home_group = models.CharField(max_length=5)