如何使用默认管理员在自定义视图中使用的漂亮的JavaScript日期和时间小部件?
我查看了Django表单文档,并简要提到了django.contrib.admin.widgets,但我不知道如何使用它?
这是我想要应用的模板.
<form action="." method="POST">
<table>
{% for f in form %}
<tr> <td> {{ f.name }}</td> <td>{{ f }}</td> </tr>
{% endfor %}
</table>
<input type="submit" name="submit" value="Add Product">
</form>
Run Code Online (Sandbox Code Playgroud)
此外,我认为应该注意的是,我没有真正为自己的表单编写视图,我使用的是通用视图.这是来自url.py的条目:
(r'^admin/products/add/$', create_object, {'model': Product, 'post_save_redirect': ''}),
Run Code Online (Sandbox Code Playgroud)
而且我对整个Django/MVC/MTV事物都是新手,所以请轻松一点......
我的DateTime模型中有一个字段,我正在寻找一种简单的方法,使其在表单中看起来不错.像这样的东西SelectDateWidget.
我一直在寻找很多类似的问题,看起来像管理日期选择器或jquery这样的东西似乎很棘手.(这是我第一次使用Django,之前从未使用过jquery).
所以,我使用的ChoiceField是这个例子,但是我无法让它工作.我得到错误名称'self'未定义.我可以不在self这里使用吗?或者有一些更简单的方法来做到这一点?我不需要花哨的日期选择器,只需要让用户轻松输入.
class ProjectForm(ModelForm):
startdate = forms.DateField()
starthour = forms.ChoiceField(choices=((6,"6am"),(7,"7am"),(8,"8am"),(9,"9am"), ...))
startminute = forms.ChoiceField(choices=((0,":00"),(15,":15"),(30,":30"),(45,":45")))
class Meta:
model = Project
def clean(self):
starttime = time(int(self.cleaned_data.get('starthour')),
int(self.cleaned_data.get('startminute')))
return self.cleaned_data
try:
self.instance.start_time = datetime.datetime.combine(
self.cleaned_data.get("startdate"), starttime)
except TypeError:
raise forms.ValidationError("")
Run Code Online (Sandbox Code Playgroud)