<p>{django}的来源:</p>
<blockquote>
<p>Given a dictionary of data and this widget's name, returns the value
of this widget. Returns None if it's not provided.</p>
</blockquote>
<p>实际上还不清楚这个函数是用来做什么的。它的目的是根据已发布数据的整个字典返回该小部件的值;也就是说,它查看该数据,在给定的小部件实例中计算出属于它的数据并返回该值。在</p>
<p>我通过使用一个小心放置的<code>raise</code>异常崩溃我自己的自定义小部件来检查这一点。在</p>
<pre><code>File "/usr/lib/python2.7/site-packages/django/forms/forms.py" in is_valid
121. return self.is_bound and not bool(self.errors)
File "/usr/lib/python2.7/site-packages/django/forms/forms.py" in _get_errors
112. self.full_clean()
File "/usr/lib/python2.7/site-packages/django/forms/forms.py" in full_clean
267. self._clean_fields()
File "/usr/lib/python2.7/site-packages/django/forms/forms.py" in _clean_fields
278. value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name))
</code></pre>
<p>是否要在此处验证?我确实使用了一个multiwidget子类,但这不一定是最好的方法。我的方法从字典中重新构造日期,并尝试从中创建一个python日期对象。如果成功,它将其转换为字符串并返回有效的字符串;如果不成功,则返回None,这将使<code>DateField()</code>类型的数据库验证失败,这正是我想要的结果。在</p>
<p>你的widget是否希望这样做取决于你在做什么。我不相信这是最优雅的解决方案,所以我要打开我自己的问题。。。在</p>
<p>参考文献:</p>
<ul>
<li><a href="https://stackoverflow.com/questions/3511855/how-do-i-use-djangos-multiwidget/4663801#4663801">How do I use Django's MultiWidget?</a></li>
<li><a href="https://stackoverflow.com/questions/4662835/django-subclassing-multiwidget-reconstructing-date-on-post-using-custom-multiwi">Django subclassing multiwidget - reconstructing date on post using custom multiwidget</a></li>
</ul>