python - Django UpdateView 不工作
问题描述
我的问题是当我使用时UpdateView
,它不会更新记录。除此之外,它也没有给出任何错误。
当我调试代码时,form_valid()
在 HTTP POST 请求之后不会调用该函数。但是我的表单类 ( AdvertisementDetailForm
) 工作正常。我找不到我做错了什么。
控制台输出如下:
GET /advertisement/publish/adv1_3ad5f56a-d99d-4ed4-b878-1327b9fa1bf8/1/ HTTP/1.1
POST /advertisement/publish/adv1_3ad5f56a-d99d-4ed4-b878-1327b9fa1bf8/1/ HTTP/1.1
第一个应用程序views.py:
class PublishAdvertisement(LoginRequiredMixin, generic.UpdateView):
login_url = '/'
redirect_field_name = '/'
model = AdvSummary
form_class = AdvertisementDetailForm
template_name = 'advertisement/publish_advertisement.html'
success_url = reverse_lazy('brand:brand_home')
def form_valid(self, form):
pk = self.kwargs.get('pk')
obj = get_object_or_404(AdvSummary, pk=pk)
obj.advertisement_image = form.cleaned_data['advertisement_image']
obj.adv_max_follower = self.request.POST['adv_max_follower']
obj.adv_min_follower = self.request.POST['adv_min_follower']
obj.adv_desc = self.request.POST['adv_desc']
selected_categories = Category.objects.filter(pk__in=self.request.POST.getlist('categories'))
obj.categories.add(*[cat for cat in selected_categories])
obj.publish_date = timezone.now()
obj.save()
return super().form_valid(form)
网址.py:
urlpatterns = [
path('publish/<slug:slug_name>/<int:pk>/',
views.PublishAdvertisement.as_view(), name='publish'),
path('delete/<slug:slug_name>/<int:pk>/',
views.DeleteAdvertisement.as_view(), name='delete'),
]
第二个应用程序views.py:
class BrandHomePage(LoginRequiredMixin, generic.View):
login_url = '/'
redirect_field_name = '/'
def post(self, request, *args, **kwargs):
view = CreateAdvertisement.as_view()
return view(request, *args, **kwargs)
def get(self, request, *args, **kwargs):
view = PublishedAdvertisementList.as_view()
return view(request, *args, **kwargs)
网址.py:
urlpatterns = [
path('', views.BrandHomePage.as_view(), name='brand_home'),
]
解决方案
解决方案:
当我像这样添加 form_invalid() 函数时,我已经弄清楚了问题的原因:
def form_invalid(self, form):
print("form is invalid")
return HttpResponse("form is invalid.. this is just an HttpResponse object")
我在 forms.py 中发现了错误
谢谢
推荐阅读
- cmd - Windows CMD 列出地图驱动器中的文件
- c++ - 如何让一个类被其他类移动?
- postgresql - 是否可以为 SSIS 管道设置 Postgres 隔离级别?
- angular - 在表单中动态传递模板引用名称
- python - tf.GradientTape() 不适用于切片输出
- angular - 我怎样才能只选择日期?
- python - 查找隐藏的表单值
- java - 在 Selenium Java 中进行测试时如何避免一次又一次的登录
- spring-boot - Spring Boot RollingFileAppender 创建文件但不附加任何内容
- android - getIntent().getExtras() 有时会在 Activity 中崩溃