Python django模型的自动继承
我有一个django项目,它有这样的模型Python django模型的自动继承,python,django,database,inheritance,Python,Django,Database,Inheritance,我有一个django项目,它有这样的模型 class Part(models.Model): attr1 = models.CharField(max_length=50) attr2 = models.CharField(max_length=50) class Document(models.Model): part = models.ForeignKey(Part) attr1 = models.CharField(max_length=50) 等等。 一个模块中有很多
class Part(models.Model):
attr1 = models.CharField(max_length=50)
attr2 = models.CharField(max_length=50)
class Document(models.Model):
part = models.ForeignKey(Part)
attr1 = models.CharField(max_length=50)
等等。一个模块中有很多模型,我需要为每个模型创建一个具有相同属性的单独模型,再加上一个或多个附加属性。
如果不亲手写每一节课,我怎么做呢?
编辑
好的,问题有点不清楚。
我想在数据库中为每个型号创建两个单独的表,一个如上面所述,另一个带有附加列。
编辑2
我想我明白了,当我把
import inspect
import sys
for name, obj in inspect.getmembers(sys.modules[__name__]):
if inspect.isclass(obj) and issubclass(obj, models.Model) and hasattr(obj, 'Meta') and inspect.isclass(obj.Meta) and not (
hasattr(obj.Meta, 'abstract') and obj.Meta.abstract):
globals()["Edit" + name] = type("Edit" + name, (obj,), {'fu': 'bar'})
在my models.py的底部,我为该文件中定义的每个模型获取一个新模型。所以我会得到
EditPart
和EditDocument
类,每个类都有一个属性fu
如何从中继承
class BaseModel(models.Model):
attr1 = models.CharField(max_length=50)
class Meta:
abstract = True
class Part(BaseModel):
attr2 = models.CharField(max_length=50)
class Document(BaseModel):
part = models.ForeignKey(Part)
在提问中投入最小的努力,并期望其他人为我做研究和尝试,并用一个金盘子给我答案,这样可以吗?这不是我想要的,尽管我发现我的问题有点不清楚。我想要一个模型部件和一个模型somethingPart,其中somethingPart与Part相同,但有一个附加属性。您不能使用抽象模型来实现这一点吗?