cra*_*kar 3 django datetime templates modelform
我在一个带有几个日期字段的模型上有一个模型formset - 它也是模型中的DateTimeField.但是当它显示在模板中时,它显示为文本字段.如何将其显示为下拉框?
WFormSet = inlineformset_factory(UserProfile, W, can_delete=False,exclude=[<list of fields to be excluded>], extra=3)
Run Code Online (Sandbox Code Playgroud)
这就是我初始化modelformset的方式.
如何覆盖这些设置
如果你的模型中有一个DateField,那么下面的例子就可以了(我注意到你有一个DateTimeField ......我会在一秒内回到那里).您将指定与通常指定的完全相同的字段类型,但是您将向窗体字段构造函数传递不同的窗口小部件.
from django.db import models
from django import forms
from django.forms.extras import SelectDateWidget
class MyModel(models.Model):
a_date_field = models.DateField()
class MyModelForm(forms.ModelForm):
a_date_field = forms.DateField(widget=SelectDateWidget())
class Meta:
model = MyModel
Run Code Online (Sandbox Code Playgroud)
据我所知,没有为DateTimeFieldDjango 1.0.x 提供的等效小部件.在这种情况下,您将需要创建自定义窗口小部件,可能是子类SelectDateWidget.我从一个快速谷歌上SelectDateTimeWidget注意到,有几个人一直在制作看起来像你正在寻找的小部件.我没有使用它们,所以请注意,但是这样的SelectDateTimeWidget补丁可能是一个很好的起点.
编辑:使用ModelFormset或InlineModelFormset时,您仍然可以通过传递form=MyModelForm给inlineformet_factory函数来实现:
MyModelFormset = inlineformset_factory(MyParentModel, MyModel, form=MyModelForm)
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为两个模型formset工厂实际上formset_factory在它们自己的实现中调用常规构造函数.这有点难以弄清楚,因为它没有在文档中明确说明......而是Django文档通过提及模型formset工厂扩展了普通的formset_factory来提及这种能力.每当我有疑问时,我会打开django/forms/models.py以查看formset工厂功能的完整签名.
| 归档时间: |
|
| 查看次数: |
2163 次 |
| 最近记录: |