我是Python和Django平台的新手。我正在尝试设计一个通用类,以便其他类可以使用通用类来创建相同的模型类型。为了更好地解释,我举了一个例子
让我说我的普通班是
class Person(models.Model):
name = models.CharField(max_length=20)
lastname=models.CharField(max_length=20)
job=models.CharField(max_length=20)
salary=models.IntegerField()
我想为我创建的每个人创建一个与Person类完全相同的表。
在我看来是这样的......
Class Person1(models.Model)
Person()
Class Person2(models.Model)
Person()
因此,每个人表都将具有与Person类相同的模型类型。你能帮帮我怎么做吗?或者有办法做到这一点吗?
答案 0 :(得分:1)
我不确定我理解你想要什么,或者为什么你想要那个,但是,我认为你的问题的答案是使用Abstract Base Class。
示例:
class Person(models.Model):
name = models.CharField(max_length=20)
lastname = models.CharField(max_length=20)
job = models.CharField(max_length=20)
salary = models.IntegerField()
class Meta:
abstract = True
class Person1(Person):
...
答案 1 :(得分:1)
我认为你缺少的是对django模型的基本理解。
django中的模型是数据库中表的表示。在此表中,您可以存储多行。您编写的每个字段都是此表中的一列。
当您拥有模型 Person 时,django将在数据库中创建一个表,其中包含您在 Person 类中定义的列。在此表中,您可以添加许多“人”项。
您无需为人模型中已经描述过的相同内容创建其他模型。
继承是django模型中的一个高级概念,以后只会导致问题。我建议您逐步完成django tutorial,因为它解释了如何使用django对象关系模型(ORM) - 模型。
最终,你会意识到存储多个“人”,你只需要这样做:
personA = Person()
personA.name = 'John'
personA.lastname = 'Smith'
personA.job = 'Chef'
personA.salary = 130
personA.save()
personB = Person(name='Homer',lastname='Simpson',job='Donut Eater',salary=100)
personB.save()