我有以下模型定义:
def _createHashID():
return uuid.uuid4().hex[:8] # 8 chars OK for < 100k items
class Act(models.Model):
hashid = models.CharField(
'hashid',
max_length=20,
default=_createHashID,
unique=True,
primary_key=True,
help_text="technical identifier")
但是,当我使用管理站点创建Act
项时,如果hashid
值是只读的,则在生成表单时会生成一次值,并在重新生成值时重新生成Act
对象已保存。这意味着Add an Act
页首先会显示一个标识符,比如说583a95de
,但是我点击它会保存它会告诉我:
The act "0b8c2832" was added successfully.
如果删除readonly
对象的admin.ModelAdmin
属性,hashid
在输入中(我显然不希望如此),但是如果是真实的那么建议的值{ {1}}新对象。
如何在第一次实例化对象(创建表单)时生成只读hashid
,并确保它确实是在保存时使用的那个?
除此之外的问题是我无法使用内联表单集,因为pk在保存时更改了!
答案 0 :(得分:1)
您可以覆盖表单上的admin表单和与此答案类似的表单上的只读值。 https://stackoverflow.com/a/325038/1637351
Docs关于管理员的表单。
根据您设置的文档,如下所示:
class ActAdmin(admin.ModelAdmin):
form = ActForm