【发布时间】:2012-01-22 16:37:05
【问题描述】:
我有一个 AdminModel,它允许用户在任何字段留空的情况下进行保存。但是,我不希望他们能够在所有字段都为空时保存。我已经使用以下方法实现了这一点:
def save_model(self, request, obj, form, change):
if form.has_changed():
obj.save()
else:
pass
但是,该模型与另一个模型具有 M2M 关系,因此当我点击保存时出现以下错误:
instance needs to have a primary key value before a many-to-many relationship can be used.
我需要在这个方法中添加什么来阻止它尝试创建 M2M 关系?
编辑:
我添加了 hacky 解决方法,但我很想知道是否有更好的方法。解决方法是更改else,使其更改ModelAdmin 的字段属性,使其不包含M2M 关系的字段——这可以防止它尝试建立关系。这不仅是hacky,而且只有在保存模型一次失败并抛出错误后才有效......
【问题讨论】:
-
如果失败,则不是解决方案。此外,该解决方案不是线程安全的。
-
我知道,我只是想弄清楚是否有办法做我想做的事。我是 django 的新手,所以我只是在尝试。
标签: django