gpt4 book ai didi

python - Django:如何使用 ModelForm 和通用 View

转载 作者:行者123 更新时间:2023-11-30 22:53:50 25 4
gpt4 key购买 nike

我正在学习Django

我对模型表单通用 View 的使用没有什么困惑。

虽然两者不同,但我的理解是两者都可以根据给定的模型类生成表单

我有一个不同的表来存储想法、喜欢、评论和标签。

我是否应该使用模型表单通用 View 来从用户那里获取想法以及喜欢和评论。

我还想自定义表单的布局,那么对我来说更好的方法是什么?

我想了解如何使用django的这个功能

最佳答案

通用 View 和模型形式不是排他性的概念;通用 View 包含特定功能的业务逻辑,而 ModelForms 根据模型的逻辑创建表单、验证/数据清理逻辑和 CRUD 功能。

在下面的示例中(来自 docs ),UpdateView(作为 Django 的一部分提供的通用 View )从单个模型实例创建模型表单。通过 CBV 约定,要更新的实例的主键应作为 url 提供的第一个位置参数。

在这种情况下,会自动生成一个 ModelForm。当需要更细粒度的控制时,您可以定义自己的ModelForm并将其提供给CBV。希望这有助于消除您的困惑。

示例 myapp/views.py:

from django.views.generic.edit import UpdateView
from myapp.models import Author
from django import forms


class MyModelForm(forms.ModelForm):
model = Author
fields = ['name', 'city', ...]


class AuthorUpdate(UpdateView):
model = Author
form = MyModelForm
template_name_suffix = '_update_form'

示例 myapp/author_update_form.html:

<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Update" />
</form>

示例 myapp/urls.py

from django.conf.urls import *
from myapp.views import AuthorUpdate

urlpatterns = patterns('',
url('^update_author/(?P<pk>[\w-]+)$', AuthorUpdate.as_view(), name='update_author'),
)

关于python - Django:如何使用 ModelForm 和通用 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38046733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com