如何从视图中更改模型中布尔字段的值?

我一直在使用的应用程序

  • 基于类的视图

  • 两个模型,问题和答案。

Question 模型用于FileField存储该问题的实际解决方案,Answer 模型用于FileField存储result用户给出的解决方案(由用户解决)。

  • 在 Answer 模型中命名的布尔字段iscorrect,默认情况下设置为 False。

我想要

  • 检查两个文件是否相同(问题模型中的解决方案和答案模型中的结果)并且,

  • 切换 BooleanField iscorrect(如上所述,此布尔字段存在于 Answer 模型中)。

我的问题归结为什么?

假设我已经弄清楚如何检查两个文件是否相同(使用comparator中的方法views.py然后为特定 id 请求问题模型的文件,然后检查它们是否相同。公平地说,我还没有实现,所以帮助也将不胜感激),我想知道如何根据views.py我的比较器方法返回的内容( True 或 False )切换 BooleanField 。

注意:正如我之前所说,我正在使用基于类的视图,所以请记住这一点,谢谢。


慕仙森
浏览 74回答 1
1回答

智慧大石

class CoderListView(ListView):    model = Question    template_name = "coder/coder_list.html"    context_object_name = 'question'class CoderDetailView(DetailView):    model = Question    template_name = "coder/coder_detail.html"    context_object_name = 'question'class CoderCreateView(CreateView):    model = Answer    fields = ['result']    context_object_name = 'answer'    template_name = "coder/coder_form.html"    def get_success_url(self):        question = self.object.question        return reverse('coder:detail', kwargs={'pk': question.id})    def form_valid(self, form):        form.instance.question = Question.objects.get(id=self.kwargs['qid'])        return super().form_valid(form)我想要更改的视图(基于比较器方法的返回值切换布尔字段是 CodeCreateView,因为用户将提交文件,然后我的方法将检查它是否与解决方案相同)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python