【发布时间】:2020-11-08 04:09:58
【问题描述】:
我一直在使用的应用程序使用
- 基于类的视图
有
- 两个模型,问答。
Question 模型有一个 FileField 来存储该问题的实际解决方案,Answer 模型有一个名为 result 的 FileField 来存储用户给出的解决方案(由用户解决)。
- Answer 模型中名为
iscorrect的布尔字段,默认设置为 False。
我想要
-
检查两个文件是否相同(问题模型中的解决方案和答案模型中的结果)并且,
-
切换布尔字段
iscorrect(如上所述,此布尔字段存在于答案模型中)。
我的问题归结为什么?
假设我已经弄清楚如何检查两个文件是否相同(在 views.py 中使用 comparator 方法,然后请求特定 id 的问题模型文件,然后检查它们是否相同。公平地说,我还没有实现这一点,因此也将不胜感激),我想知道如何根据我的比较器方法返回的内容( True 或 False )从 views.py 切换 BooleanField。
注意:正如我之前所说,我使用的是基于类的视图,所以请记住这一点,谢谢。
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 因为用户将提交文件,然后我的方法将检查它是否与解决方案相同)。
【问题讨论】:
-
不完全确定问题是关于什么的。您是在问如何设置答案的
is_correct字段吗?像answer.is_correct = ...然后answer.save()这样的东西可以,不是吗? -
是的,我在问如何设置该字段以及如何根据特定条件在视图中切换它。
-
请多分享一下您的观点。否则答案似乎微不足道,只是在上面的评论中,但感觉可能还有更多,但如果没有看到您要解决的代码部分,则不确定。
-
好吧,我将我的观点添加到问题中。 p.s 目前我还没有准备好比较器方法。
标签: python django django-views