【问题标题】:Django ModelForm's insertion form also shows existing recordsDjango ModelForm 的插入表单也显示现有记录
【发布时间】:2013-11-13 22:06:36
【问题描述】:

我正在使用 ModelForms 生成一些用户注册表数据。当我提交表单时,确实添加了记录。但是,现有记录也以表单格式显示。我只想添加新用户。

注册 html 表单:

    <div class="container">
        <h1>Sign up</h1>
        <form method="post" action="/users/signup/">{% csrf_token %}
            <table>
                {{ formset }}     
                <tr><th><input type="submit" /></th></tr>
            </table>
        </form>
    </div>

声明模型表单的函数:

def model_signup(request):
    ModelFormSet = modelformset_factory(Model)
    if request.method == 'POST':
        formset = ModelFormSet(request.POST, request.FILES)
        if formset.is_valid():
            formset.save()
            # do something.
    else:
        formset = ModelFormSet()
    return render_to_response("model_signup.html", {
        "formset": formset,
    }, context_instance=RequestContext(request))

谢谢!

【问题讨论】:

    标签: python django python-2.7 django-forms


    【解决方案1】:

    创建表单集时可以specify a queryset。如果您不想显示现有记录,请使用空查询集 MyModel.objects.none()

    ModelFormSet = modelformset_factory(MyModel)
    if request.method == 'POST':
        formset = ModelFormSet(request.POST, request.FILES, queryset=MyModel.objects.none())
        if formset.is_valid():
            formset.save()
            # do something.
    else:
        formset = ModelFormSet(queryset=MyModel.objects.none())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 2021-07-06
      • 2020-02-13
      • 2014-06-05
      • 2017-08-02
      • 1970-01-01
      • 2020-03-02
      相关资源
      最近更新 更多