如果已经创建了django,如何停止创建视图

how to stop create view if already created django

请帮助我在 Django 项目中制作此应用程序

这里是models.py文件代码

from django.db import models
from bio.models import Profile

class Question(models.Model):
   name = models.TextField(max_length=500)

   def __str__(self):
     return self.name

class Answer(models.Model):
  question = models.ForeignKey(Question, related_name='question', on_delete=models.CASCADE)
  profile = models.ForeignKey(Profile, related_name='profile', on_delete=models.CASCADE)
  text = models.TextField(max_length=400)
  created_on = models.DateTimeField(auto_now_add=True,null=True)

  def __str__(self):
    return "{0} on {1}".format(self.question, self.profile)
  
  class Meta:
    db_table = 'answer'
    constraints = [
        models.UniqueConstraint(fields=['profile', 'text', 'question'], name='unique answer')
    ]

  

这里是views.py文件代码

class DetailViewMixin(object):
  details_model = None
  context_detail_object_name = None

  def get_context_data(self, **kwargs):
    context = super(DetailViewMixin, self).get_context_data(**kwargs)
    context[self.context_detail_object_name] = self.get_detail_object()
    return context

  def get_detail_object(self):
    return self.details_model._default_manager.get(pk=self.kwargs['pk'])


class AnswerCreate(DetailViewMixin, CreateView):
  details_model = Question
  context_detail_object_name = 'question'
  model = Answer
  form_class = NewAnswerForm
  template_name = "qna/answer.html"
  success_url = reverse_lazy('qna:list')

  def form_valid(self, form):
    form.instance.profile_id = self.kwargs.get('pk')
    form.instance.question_id = self.kwargs.get('pk')
    return super().form_valid(form)

这是我的 forms.py 代码

from django import forms
from .models import Answer

class NewAnswerForm(forms.ModelForm):
  class Meta:
    model = Answer
    fields = ['text',]

  def clean(self):
    try:
        Answer.objects.get(text=self.cleaned_data['text'].lower())
        raise forms.ValidationError('Answer exists!')
    except Answer.DoesNotExist:
        pass

    return self.cleaned_data

我哪里错了????

我希望如果用户回答了一个问题就不能再回答了

如果对象已经创建,我如何进行表单验证

将 UniqueConstraint 添加到 Answer,这样问题和配置文件的组合就不能重复: https://docs.djangoproject.com/en/3.1/ref/models/constraints/#django.db.models.UniqueConstraint