Django - ModelForm动态字段更新

Pie*_*NAY 3 python django django-forms

我正在尝试更新ModelForm的某些字段,这些字段不是固定的.(我只有tutor视图自动填充)

模型:

class Session(models.Model):
  tutor = models.ForeignKey(User)
  start_time = models.DateTimeField()
  end_time = models.DateTimeField()
  status = models.CharField(max_length=1)
Run Code Online (Sandbox Code Playgroud)

形成:

class SessionForm(forms.ModelForm):
  class Meta:
    model = Session
    exclude = ['tutor']
Run Code Online (Sandbox Code Playgroud)

对于给定的会话,有时我只需要更新end_time,有时只start_timeend_time.

我怎样才能在视图中这样做?


编辑

我已经给出了示例,但它不仅限于这些示例,我需要更新的字段未预定义,我需要能够更新任何字段

Jos*_*ton 9

我以前必须做类似的事情,虽然它不是很漂亮,但它非常有效.它涉及在运行时动态创建类型,并使用该类型.对于某些文档,您可以看到django的DynamicModels.

我们在这里......你的要求.

  • 您希望能够使用表单更新模型
  • 您希望有选择地指定在运行时更新哪些字段

所以,一些代码:

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!
Run Code Online (Sandbox Code Playgroud)