Django - 我可以使用一个 UpdateView 来更新不同页面上的字段吗?
Django - Can I use one UpdateView to update fields on separate pages?
假设我有一个 Student 模型,其中包含姓名和年龄字段,并且我有一个包含显示这些字段的 DetailView class 的页面。比方说,我不想使用一个“更新”按钮将我带到一个表单来一次更新模型的所有字段,而是希望每个字段都有一个单独的按钮,将我带到一个带有表单的单独页面来更新它。
我知道如何使用单独的 HTML 文件和单独的 UpdateView class 为每个字段执行此操作,但似乎应该有更简洁的方法。
在第一个 HTML 文件中,我有两个按钮:
<a href="{% url 'update_name' pk=student.pk%}">Update name</a>
<a href="{% url 'update_age' pk=student.pk%}">Update age</a>
第二个我有表格:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit">
</form>
网址:
urlpatterns = [
path('<int:pk', views.StudentDetailView.as_view(), name="detail"),
path('update_name/<int:pk>', views.StudentUpdateView.as_view(), name="update_name"),
path('update_age/<int:pk>', views.StudentUpdateView.as_view(), name="update_age"),
]
观看次数:
class StudentUpdateView(UpdateView):
model = models.Student
template_name = 'update_student.html'
我想我正在寻找某种可以放在我的视图中的 if 语句,例如:
if condition:
fields = ("name",)
elif condition2:
fields = ("age",)
希望这是有道理的!感谢您的帮助:)
最简单的方法是覆盖 urls.py 文件中的 fields
。
urlpatterns = [
path('<int:pk', views.StudentDetailView.as_view(), name="detail"),
path('update_name/<int:pk>', views.StudentUpdateView.as_view(fields=['name']), name="update_name"),
path('update_age/<int:pk>', views.StudentUpdateView.as_view(fields=['age']), name="update_age"),
]
View.as_view
接受关键字参数,用于覆盖该事件的 类 属性。
假设我有一个 Student 模型,其中包含姓名和年龄字段,并且我有一个包含显示这些字段的 DetailView class 的页面。比方说,我不想使用一个“更新”按钮将我带到一个表单来一次更新模型的所有字段,而是希望每个字段都有一个单独的按钮,将我带到一个带有表单的单独页面来更新它。
我知道如何使用单独的 HTML 文件和单独的 UpdateView class 为每个字段执行此操作,但似乎应该有更简洁的方法。
在第一个 HTML 文件中,我有两个按钮:
<a href="{% url 'update_name' pk=student.pk%}">Update name</a>
<a href="{% url 'update_age' pk=student.pk%}">Update age</a>
第二个我有表格:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit">
</form>
网址:
urlpatterns = [
path('<int:pk', views.StudentDetailView.as_view(), name="detail"),
path('update_name/<int:pk>', views.StudentUpdateView.as_view(), name="update_name"),
path('update_age/<int:pk>', views.StudentUpdateView.as_view(), name="update_age"),
]
观看次数:
class StudentUpdateView(UpdateView):
model = models.Student
template_name = 'update_student.html'
我想我正在寻找某种可以放在我的视图中的 if 语句,例如:
if condition:
fields = ("name",)
elif condition2:
fields = ("age",)
希望这是有道理的!感谢您的帮助:)
最简单的方法是覆盖 urls.py 文件中的 fields
。
urlpatterns = [
path('<int:pk', views.StudentDetailView.as_view(), name="detail"),
path('update_name/<int:pk>', views.StudentUpdateView.as_view(fields=['name']), name="update_name"),
path('update_age/<int:pk>', views.StudentUpdateView.as_view(fields=['age']), name="update_age"),
]
View.as_view
接受关键字参数,用于覆盖该事件的 类 属性。