python - Django - ModelForm动态字段更新

标签 python django django-forms

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

型号:

class Session(models.Model):
  tutor = models.ForeignKey(User)
  start_time = models.DateTimeField()
  end_time = models.DateTimeField()
  status = models.CharField(max_length=1)

表格:

class SessionForm(forms.ModelForm):
  class Meta:
    model = Session
    exclude = ['tutor']

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

如何在 View 中执行此操作?


编辑

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

最佳答案

我以前也做过类似的事情,虽然不是很漂亮,但非常有效。它涉及在运行时动态创建类型,并使用该类型。对于某些文档,您可以查看 DynamicModels for 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!

关于python - Django - ModelForm动态字段更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10223891/

相关文章:

python - 为 django 密码重置表单添加样式

python - 根据匹配多个键组合列表中的字典:value pairs

python - 文件字符串pathlib的真实路径

python - Django: AttributeError 表单没有属性 'is_valid'

python - 在 Django 中更新条件

python - 保存多对多字段 Django 表单

python - 运行主循环时读取 tmx 文件(用于 pygame)

python - 神经网络的反向传播(形状误差)

python - 如何在 Django 中设置站点框架

Django:用于所有验证的 models.Field.validate() 会节省大量代码编写吗?