我正在尝试更新 ModelForm 的某些字段,这些字段不固定。 (我只有tutor
由视图自动填充)
Model:
class Session(models.Model):
tutor = models.ForeignKey(User)
start_time = models.DateTimeField()
end_time = models.DateTimeField()
status = models.CharField(max_length=1)
Form:
class SessionForm(forms.ModelForm):
class Meta:
model = Session
exclude = ['tutor']
对于给定的会话,有时我只需要更新end_time
,有时仅start_time
& end_time
.
我怎样才能在视图中做到这一点?
Edit
我已经给出了示例,但不限于这些示例,我需要更新的字段不是预定义的,我需要能够更新任何字段
我以前也做过类似的事情,虽然不太漂亮,但非常有效。它涉及在运行时动态创建类型并使用该类型。对于一些文档,您可以查看Django 的动态模型。
我们开始..您的要求。
- 您希望能够使用表单更新模型
- 您想要有选择地指定要在运行时更新哪些字段
所以,一些代码:
def create_form(model, field_names):
# the inner class is the only useful bit of your ModelForm
class Meta:
pass
setattr(Meta, 'model', model)
setattr(Meta, 'include', field_names)
attrs = {'Meta': Meta}
name = 'DynamicForm'
baseclasses = (forms.ModelForm,)
form = type('DynamicForm', baseclasses, attrs)
return form
def my_awesome_view(request):
fields = ['start_time', 'end_time']
form = create_form(Session, fields)
# work with your form!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)