Я не совсем уверен, что то, что я собираюсь сделать, программно возможно. Хотя, если это сработает, мне очень поможет организовать мой код.
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, который содержит этот набор столбцов, и я хочу использовать их в разных моделях в своих проектах. Я не хочу, чтобы модель Choice наследовала от AuditColumns, потому что я собираюсь использовать ту же технику для включения других столбцов из других источников в мой класс Choice.
Конечно, то, что я написал выше, также не практично, потому что мне придется повторять имена столбцов каждый раз, когда я хочу включить AuditColumns в одну из моделей в моем проекте.
То, что я хочу сделать, достижимо или нет?