如何让我的Django通用视图工作

时间:2016-12-23 17:33:27

标签: django

我是以正确的方式来做这件事的吗?从未使用过'通用视图'我想要使​​用Django的generic.UpdateView视图。当我遇到'更新'在表单上的按钮,我收到一封无效的表单回复,上面有消息'此幻灯片名称的图书馆已经存在'

感谢任何帮助。

查看:

class Slideview(generic.UpdateView):
    model = Library
    template_name = 'app1/slide_update.html'
    fields = ['slide_name', 'reference_value','esd',
              'current_mean', 'counts_averaged', 'status']

    context_object_name = 'qc_slide'

    #def get_queryset(self):
        #slide_id = self.kwargs['pk']
        #return Library.objects.filter(slide_name=slide_id)

    def get_success_url(self):
        return reverse('Slideview', args=[self.kwargs['pk']])

    def get_context_data(self, **kwargs):
        context = super(Slideview, self).get_context_data(**kwargs)
        #form = self.get_form(self.get_form_class())
        #context['form'] = form
        return context

    def post(self, request, *args, **kwargs):
        print("Im in post")
        form = self.get_form(self.get_form_class())
        if form.is_valid():
            #Code will go here which will query a second model
            #perform a series of math calculations and then
            #return the updated information
            self.object = self.get_object()
            self.object.save()
            return self.form_valid(form)
        else:
            print("Form not valid")
            self.object = self.get_object()
            return self.form_invalid(form)

型号:

class Library(models.Model):
    slide_name = models.CharField(max_length=5, primary_key=True)
    reference_value = models.DecimalField(max_digits=5, decimal_places=2, default=Decimal(0))
    esd = models.DecimalField(max_digits=5, decimal_places=2, default=Decimal(0))
    current_mean = models.DecimalField(max_digits=5, decimal_places=2, default=Decimal(0))
    counts_averaged = models.IntegerField(default=0)
    status = models.CharField(max_length=9)

    def __str__(self):
        return self.slide_name

0 个答案:

没有答案