Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为其他类创建通用类也可以具有相同的模型_Python_Django_Class - Fatal编程技术网

Python 如何为其他类创建通用类也可以具有相同的模型

Python 如何为其他类创建通用类也可以具有相同的模型,python,django,class,Python,Django,Class,我不熟悉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.IntegerF

我不熟悉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类相同的模型类型。你能帮我怎么做吗?还是有办法做到这一点

我不确定我是否理解你想要什么,或者你为什么想要,但是,我认为你的问题的答案是使用一个

例如:

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):
    ...

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

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

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

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

继承在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()

你为什么认为你需要这样做?你可以在原始的
Person
类中存储多个“Person”。为了爱所有美好和神圣的事物,请阅读文档:你用这样的问题浪费了我们和你的时间。@ChrisPratt:这似乎不必要的苛刻……不太可能。这里的目标不应该是向人们灌输知识。比如运行一个简单的谷歌搜索,或者花5秒钟的时间查看文档是否碰巧提到了你要问的问题,这是来这里之前最不需要问别人的问题。谢谢,你理解得很好。但是,我只是想确定我应该为Person1编写什么,使其具有与Person类完全相同的字段?在我的示例中,不会为
Person
创建任何表,因为
抽象
真的
。但是将为
Person1
创建一个表,该表将包含基类(Person)的4个字段(姓名、姓氏、职务和薪水)。如果需要,您可以向
Person1
添加更多字段。但是,如果您的
Person1
Person
完全相同,则只需将我的“…”替换为
pass
。阅读文档…谢谢,但我必须先在model.py中创建两个表(PersonB和PersonA),然后再这样做,对吗?如果您存储的信息不同,您只需要创建两个表;否则,不需要复制表。