-1

我是 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 表都将具有与 Person 类相同的模型类型。你能帮我怎么做吗?或者有没有办法做到这一点?

4

2 回答 2

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):
    ...
于 2012-09-06T15:53:45.640 回答
1

我认为您缺少的是对 django 模型如何工作的基本了解。

django 中的模型是数据库中表的表示。在此表中,您可以存储多行。您编写的每个字段都是此表中的一列。

由于您有一个模型Person - django 将在数据库中创建一个表,其中包含您在Person类中定义的列。在此表中,您可以添加许多“人”项。

您不需要创建其他模型来存储您已经在Person模型中描述的相同内容。

继承是 django 模型中的一个高级概念,只会在以后导致问题。我建议您逐步阅读 django 教程,因为它解释了如何使用 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()
于 2012-09-06T16:27:26.993 回答