我不完全确定即将要做的事情是否在程序上是可能的。尽管这样做有效,它将帮助我组织我的代码。
class AuditColumns(models.Model):
created_at=models.DateField("Created at")
created_by=models.ForeignKey(User, db_column="created_by", related_name="%(app_label)s_%(class)s_y+")
updated_at=models.DateTimeField("Updated at")
updated_by=models.ForeignKey(User, db_column="updated_by", null=True, blank=True, related_name="%(app_label)s_%(class)s_y+")
class Meta:
abstract = True
def return_audit_columns(self):
return self.created_at, self.created_by, self.updated_at, self.updated_by
class Choice(models.Model):
choice=models.CharField(max_length=200)
def __init__(self):
self.created_at, self.created_by, self.updated_at, self.updated_by=AuditColumns.return_audit_columns(self)
上面的代码不起作用,这是我的尝试或我希望做的。基本上,我有类AuditColumns,其中包含这组列,我希望在项目中的不同模型中使用它们。我不希望选择模型从AuditColumns继承,因为将使用相同的技术将其他源的其他列包含到我的选择类中。
当然,我上面写的也不实际,因为每次我想在整个项目的模型中包含AuditColumns时,我都必须重复列名。
我想做的是不是可以实现?
Python允许您进行多重继承,这样您就可以将多个基类的属性继承到Choice类中,这可能是您想要的。在
将为您的Choice类提供AuditColumns类和Foo类的属性。你也在你的例子中滥用自我。您正在调用AuditColumns类的return_audit_columns方法,该方法需要该类的实例,但传递的Choice类的实例不是您想要的。在
通常的方法是使用content types。您创建了一个类似于} ,它可以指向项目数据库中的任何模型。在
AuditColumns
的模型,但是还包括另一个字段^{相关问题 更多 >
编程相关推荐