作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Django 中创建了一个包含一些必填字段的详细表单。如果当时未设置必填字段,我想毫无异常(exception)地将页面保存为草稿选项。我该怎么做?
最佳答案
如果您保存为草稿,则首先为不需要设置的字段设置 required=False。然后,在您的表单中,添加一个 bool 值字段,例如“save_as_draft”。现在您需要一种方法来根据 save_as_draft 字段的状态(无论用户是否选中此字段)来验证这些字段。你可以使用这样的方法:
def is_provided(self, field):
value = self.cleaned_data.get(field, None)
if value == None or value == '':
self._errors[field] = ErrorList([u'This field is required.'])
if field in self.cleaned_data:
del self.cleaned_data[field]
将此方法添加到您的表单中,并在表单的 clean 方法中使用它来验证您的字段。这看起来像这样:
def clean(self):
draft = self.cleaned_data.get('save_as_draft', False)
if not draft:
# User doesn't save a draft so we need to check if required fields are provided
req_fields = ['field1', 'field2', 'field3']
for f in req_field:
self.is_provided(f)
return self.cleaned_data
如果用户更喜欢 save_as_draft 按钮而不是复选框,那么您需要修改 View 并将一些参数传递给表单的构造函数,具体取决于用户是单击 save_as_draft 按钮还是仅单击保存按钮。在 Form 构造函数中保存此状态 aa self.save_as_draft 并在 Form.clean 方法中使用它来检查您是否正在保存草稿。
您好,卢卡斯
关于django-admin - 如何将页面另存为草稿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2809939/
我有 json 数据: { "products": [ { "productId" : 0, "productImg" : "../img/product-ph
我是一名优秀的程序员,十分优秀!