我想更改用于默认 LogEntry 类的模型,以便它在数据库中为属性“object_id”创建一个 varchar 而不是一个 clob
原始模型定义在
django/contrib/admin/models.py
class LogEntry(models.Model):
action_time = models.DateTimeField(_('action time'), auto_now=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
content_type = models.ForeignKey(ContentType, blank=True, null=True)
object_id = models.TextField(_('object id'), blank=True, null=True)
object_repr = models.CharField(_('object repr'), max_length=200)
action_flag = models.PositiveSmallIntegerField(_('action flag'))
change_message = models.TextField(_('change message'), blank=True)
Run Code Online (Sandbox Code Playgroud)
我想将 object_id 的定义更改为
object_id = models.Charfield(_('object id'), max_length=1000, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
我知道,如果有人在大于 varchar(1000) 的实体上定义主键,这可能会导致问题,但我不希望实体的 PK 定义为这样,因此我对限制感到满意.
这将大大提高访问历史日志时的查询效率。
我真的不想破解实际的模型定义,但我无法找到如何优雅地覆盖模型定义。
有任何想法吗?