【发布时间】:2013-01-22 12:38:59
【问题描述】:
这似乎是一个常见问题,但此处其他问题中建议的补救措施似乎对我不起作用。
我通过 html 表单提交了一些日期,有些不是必需的,可以为空白。但是我得到了错误
[u'Enter a valid date in YYYY-MM-DD format.']
下面是我的模型文件
class ProjectM(models.Model):
order_received = models.DateField(null=True,blank=True)
MySQL 数据库
Field | Type | Null | Key | Default | Extra
order_received | date | YES | | NULL |
所以按照我的理解,我应该在模型文件中将它设置为 True 以表示 null 和空白,并确保在我的 mysql DB 中我允许 NULL。但是我仍然得到上面提到的验证错误,当我检查这个特定字段的 POST 数据中的值时,它是''。我尝试更改正在生成的 html 中的值以检查空字段并将值设为“null”,但这似乎也不起作用。
任何帮助将不胜感激:)
更新:@Cathy,这里是描述问题的模式代码。我省略了一些与问题完全无关的代码,并对其进行了一些简化。基本上,我正在构建一个小型数据库网络前端,它只是将记录拉出,以表格格式显示在表单中,并允许您编辑和更新记录。它会拉出一个空白的日期字段,但不会让我更新。
模板
{% for record in records %}
<form method="post" action="">
<tr>
<td><input type="submit" value="{{ record.id }}" name="submit"></td>
<td><input type="text" value="{{ record.pm }}" name="pm"></td>
<td><input type="text" value="{{ record.spec }}" name="spec"></td>
<td><input type="date" value="{{ record.order_received|date:"Y-m-d" }}" name="order_received"></td>
</tr>
</form>
{% endfor %}
型号
class ProjectM(models.Model):
pm = models.CharField(max_length="200")
spec = models.CharField(max_length="200")
order_received = models.DateField(null=True,blank=True)
查看
def all(request):
if request.method == 'POST':
id = request.POST['submit']
pm = request.POST['pm']
spec = request.POST['spec']
order_received = request.POST['order_received']
if not order_received:
order_received = 'None'
update = ProjectM.objects.get(pk=int(id))
update.pm = pm
update.spec = spec
update.order_received = order_received
update.save()
更新模板代码
{% if record.order_received %}
<td>
<div class="styled-dateentered">
<input class="entered" name='order_received{{ record.id }}' id="order_received{{ record.id }}" type="date" value="{{ record.order_received|date:"Y-m-d" }}">
</div>
</td>
{% else %}
<td>
<div class="styled-datenotentered">
<input class="notentered" id="order_received{{ record.id }}" name="order_received{{ record.id }}" type="date" value="None">
</div>
</td>
{% endif %}
我希望这会有所帮助。非常感谢您的帮助。
谢谢
【问题讨论】:
-
在该字段中输入“required=False”
-
你的表单是什么样子的
-
我的表单很基本,我们可以这样说
-
@cathy 我没有使用 django 中的 model.forms 来创建我的表单。我在模型文件的字段选项中尝试了这个,但我猜它吐出一个错误,因为它不是真正的 mysql 字段选项。
-
我可以看看你的完整代码吗?只需更新您的问题
标签: django forms date null models