繁体   English   中英

form.is_valid(): — 使用 ModelForm 而不是 form- 用户特定数据 - Django

[英]form.is_valid(): — with ModelForm instead of form- User specific data - Django

所以我在我的 Django 网站中集成了用户特定的数据,我已经开始工作了。 现在它正在处理一个名为 ToDoList 的模型,在我的 forms.py 文件中有一个名为“name”的字段和一个 (form.Form)。 它可以工作,但现在我需要更改它以使用名为 Sheet_Building 的不同模型,该模型具有许多字段,更重要的是一个名为 SheetForm_Building 的新表单,它是一个 (form.ModelForm)。 问题:我无法在我的 views.py 文件中获取我的视图以支持 form.ModelForm 而不是 form.Form。 我将在下面链接我的表单和 HTML,但除了当我尝试将新的 ModelForm 集成到视图中时,它都可以正常工作。

视图.py

def adddata_building(response):
    if response.method == "POST":
        form = CreateNewList(response.POST)

        if form.is_valid():
            n = form.cleaned_data["name"]
            t = ToDoList(name=n)
            t.save()
            response.user.todolist.add(t)

        return HttpResponseRedirect("/front_page/sheets/list_data_building/")

    else:
        form = CreateNewList()

    return render(response, 'sheets/add_data/add_data_building.html', {'form': form})

模型.py

class ToDoList(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="todolist", null=True)
    name = models.CharField(max_length=200)

    def __str__(self):
        return self.name

forms.py 中的当前表单

class CreateNewList(forms.Form):
    name = forms.CharField(label="Name ", max_length=300)

需要在 forms.py 中使用的表单

class CreateNewList(forms.ModelForm):
    class Meta:
        model = ToDoList
        fields = '__all__'

创建 HTML

<h3>Create a New To Do List</h3>
<br>
<form method="post" action="" class="form-group">
    {% csrf_token %}
    <div class="input-group mb-3">
        <div class="input-group-prepend">
        <button name="save" type="submit" class="btn btn-success">Create</button>
        </div>
        {{form.name}}
    </div>
</form>

查看 HTML

{% for td in user.todolist.all %}
    <p><a href="/{{td.id}}"><h3>{{td.name}}</h3></a></p>
{% endfor %}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM