我试图在django中设计一个带有一些审计字段的模型.如创建,创建,更新和更新.这四列将在不同应用程序中的所有模型中重复出现.
我的第一个问题是,有没有办法放置这些列,并且每次我需要它们时都可以将它们包含在我的课程中?
我的第二个问题,下面代码中的related_name属性有什么意义?没有它,代码将返回错误,加上整个应用程序的值必须是唯一的.有没有办法确保它始终独一无二?
class Poll(models.Model):
question=models.CharField(max_length=300)
start_poll_at=models.DateTimeField(null=True)
end_poll_at=models.DateTimeField(null=True)
is_active=models.BooleanField(default=True)
created_at=models.DateField("Created at")
created_by=models.ForeignKey(User, db_column="created_by", related_name="poll_user_created_by")
updated_at=models.DateTimeField("Updated at")
updated_by=models.ForeignKey(User, db_column="updated_by", null=True, related_name="poll_user_updated_by")
class Choice(models.Model):
choice=models.CharField(max_length=200)
created_at=models.DateField("Created at")
created_by=models.ForeignKey(User, db_column="created_by", related_name="poll_user_created_by")
updated_at=models.DateTimeField("Updated at")
updated_by=models.ForeignKey(User, db_column="updated_by", null=True, related_name="poll_user_updated_by")
Run Code Online (Sandbox Code Playgroud)
谢谢
试试这个:
class AbstractClass(models.Model):
created_at=models.DateField("Created at")
created_by=models.ForeignKey(User, db_column="created_by", related_name="poll_user_created_by")
updated_at=models.DateTimeField("Updated at")
updated_by=models.ForeignKey(User, db_column="updated_by", null=True, related_name="poll_user_updated_by")
class Meta:
abstract = True
Run Code Online (Sandbox Code Playgroud)
然后将其用作其他模型的基础:
class Poll(AbstractClass):
question=models.CharField(max_length=300)
start_poll_at=models.DateTimeField(null=True)
end_poll_at=models.DateTimeField(null=True)
is_active=models.BooleanField(default=True)
Run Code Online (Sandbox Code Playgroud)
这是关于这个的django文档:http://docs.djangoproject.com/en/dev/topics/db/models/#abstract-base-classes