我使用的是基于类的通用视图,特别是updateview。我有其他的对象,我目前有哪些crud的预期。
现在,我创建了一个新对象,它也使用了基于类的通用视图。我现在的问题是,当我提交一个更新表单时,我无法准确地跟踪在更新表单上按下提交按钮时会发生什么。
它指向这个url
http://localhost:8000/order/question_update/
但是我没有一个没有参数的问题更新url。我有一个问题更新url,在结尾有一个参数。
从我的url.py
path('question_update/<int:pk>', views.QuestionUpdate.as_view(), name='question_update'),
而且成功URL也没有指向上面的问题更新URL。
我如何知道当我点击submit按钮时,泛型类updateview会做什么?我只想追踪它在哪里得到的网址,我没有声明任何地方。
我对代码进行了文本搜索,但这个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)])