【发布时间】:2019-01-08 12:07:19
【问题描述】:
我正在使用基于类的通用视图,特别是 UpdateView。我目前拥有的其他对象可以按预期执行 CRUD。
现在,我创建了一个新对象,它也使用基于通用类的视图。我现在的问题是,当我提交更新表单时,我无法准确跟踪按下更新表单上的提交按钮时会发生什么。
它指向这个 url http://localhost:8000/order/question_update/
但我没有没有参数的 question_update url。我有一个 question_update url,最后有一个参数。
来自我的 urls.py
path('question_update/<int:pk>', views.QuestionUpdate.as_view(), name='question_update'),
而且成功的 url 也没有指向上面的 question_update url。
当我点击提交按钮时,我如何知道通用类 UpdateView 做了什么?我只想追踪它从哪里获取我没有在任何地方声明的 URL。
我对我的代码进行了文本搜索,但根本没有声明这个 url。
这是其他网址
path('question_list/<int:file_id>/', views.QuestionList.as_view(), name='question_list'),
path('question_create_param/<int:file_id>/', views.QuestionCreate.as_view(), name='question_create_param'),
path('question_update/<int:pk>', views.QuestionUpdate.as_view(), name='question_update'),
这是我对更新功能的看法
class QuestionUpdate(LoginRequiredMixin, UpdateView):
login_url = 'login'
model = Question
form_class = QuestionForm
def get_form(self, data=None, files=None, **kwargs):
kwargs['pk'] = self.kwargs['pk']
return QuestionForm(data, files, **kwargs)
def get_success_url(self):
messages.success(self.request, 'Question updated')
obj = get_object_or_404(Question, pk=self.kwargs['pk'])
return reverse_lazy('file_status:question_list', args=[obj])
这是我的模板
{% extends "base.html" %}
{% load bootstrap3 %}
{% block content %}
<h1>Create/Update</h1>
<form id="question_form" method="post" action="." class="form">
{% csrf_token %}
{% bootstrap_form form layout='vertical' %}
{% buttons %}
<button type="submit" class="btn btn-primary">Submit</button>
{% endbuttons %}
</form>
{% endblock %}
这也是我的模型
class Question(models.Model):
file = models.ForeignKey(file, on_delete=models.CASCADE)
query_type = models.CharField(max_length=255, null=True)
date_sent = models.DateField(auto_now=False, auto_now_add=False, null=True)
date_completed = models.DateField(auto_now=False, auto_now_add=False, null=True)
responsible = models.CharField(max_length=255, null=True)
status = models.CharField(max_length=255, null=True)
remarks = models.CharField(max_length=255, null=True)
def __str__(self):
return str(self.file.id)
def get_absolute_url(self):
return reverse('file_status:question_detail', args=[str(self.id)])
【问题讨论】:
-
请显示其余的 URL、视图本身和模板。
-
你不是在
urls.py中使用router.register()吗? -
@hugo,不,先生,我不使用它。
标签: django