【发布时间】:2021-12-27 20:17:28
【问题描述】:
您好,我在 django 3.2 中遇到了复合键的问题。根据我的客户要求,他需要一个复合键作为主键,而不仅仅是在 unique_together 约束上,所以我想知道是否有任何方法或地方可以在验证之前拦截实例并使用来自其他字段的值填充复合键并将其保存到数据库ej:
class MyModel(models.Model):
foo = models.UUIDField(default=uuid.uuid4,
auto_created=True, editable=False, max_length=36)
bar = models-charfield()
taz = models.charfield()
composite_key = models.charfield(primary_key=True, default = 'foo' + 'taz' + 'foo')
这些行中的某些内容我无法从 django 管理站点上的表单字段验证器中获得通过,因此我真的无法测试信号或 save() 方法,任何帮助都将不胜感激。
【问题讨论】:
-
删除
composite_key中的default并通过使用其他字段填充composite_key 值来覆盖模型保存方法。像这样覆盖stackoverflow.com/questions/4269605/… -
现在可以正常工作了,但是我可以仅从命令行创建用户,并且我从视图(我不使用的女巫)中推测,但从管理站点我无法通过“composite_key”必填字段
标签: django django-models django-forms django-signals django-3.2