3
我已经在Django中创建了一个具有一些必填字段的详细表单。如果当时没有设置必填字段,我希望将页面另存为Draft选项。我该怎么做?如何将页面保存为草稿
我已经在Django中创建了一个具有一些必填字段的详细表单。如果当时没有设置必填字段,我希望将页面另存为Draft选项。我该怎么做?如何将页面保存为草稿
如果您保存为草稿,则无需设置的字段的第一组必需= False。然后,在表单中添加一个像“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]
添加这个方法到您的表单,并用它在形式上的清洁方法来验证你的域。这应该是这样的:
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按钮,而不是复选框,那么你就需要修改你的看法,并根据用户是否点击save_as_draft按钮或只是保存按钮一些参数传递到您的窗体构造函数。在Form构造器中保存这个状态aa self.save_as_draft,并在Form.clean方法中使用它来检查你是否保存草稿。
问候, 卢卡斯
使用这种方法,你就必须让所有的模型字段为空的,这是不好的 – 2012-10-31 07:55:04