Django 2.2: ошибка целостности: ошибка ограничения внешнего ключа - PullRequest
0 голосов
/ 10 октября 2019

При отправке формы жалобы я пытаюсь установить значение жалобы для пользователя, вошедшего в систему, но я получаю ошибку ограничения внешнего ключа. Я устанавливаю начальную стоимость жалобы, используя form.inital. Пожалуйста, помогите.

models.py

class User(AbstractUser):
  is_grievant = models.BooleanField(default=False)
  is_department = models.BooleanField(default=False)

class Grievant(models.Model):
  student = models.OneToOneField(User,on_delete=models.CASCADE,primary_key=True)
  Registeration = models.IntegerField(default=0000)
  Room = models.CharField(max_length=50)
  Hostel = models.CharField(max_length=100)

  def __str__(self):
    return self.student.username


class Complaint(models.Model):
   grievant = models.ForeignKey('grievance_app.Grievant',on_delete=models.CASCADE,related_name='complaintee',primary_key=True)
   department = models.ForeignKey('grievance_app.Department',on_delete=models.CASCADE)
   text = models.TextField()
   heading = models.CharField(max_length=200,blank=False,null=False,default='Problem')
   media = models.ImageField(upload_to='media/',blank=True)
   created_date = models.DateTimeField(default=timezone.now())
   status_choices = [('D','Done'),('P','Pending'),('N','Not Accepted')]
   status = models.CharField(choices=status_choices,max_length=1,default='N')

class Meta():
    verbose_name_plural = 'Complaints'

def change_status(self,choice):
    self.status = choice
    self.save()

def __str__(self):
    return self.heading

def get_absolute_url(self):
    return reverse("complaint_detail",kwargs={'pk':self.pk})

forms.py

class ComplaintForm(forms.ModelForm):

class Meta():
    model = Complaint
    fields = ('department','heading','text','media',)

просмотров. py

@method_decorator([login_required, grievant_required], name='dispatch')
class CreateComplaintView(CreateView):
  login_url = '/login/'
  redirect_field_name = 'complaint_detail.html'
  template_name = 'create_complaint.html'
  form_class = ComplaintForm

  model = Complaint

  def set_grievant(self):
    ComplaintForm(initial={'grievant':self.request.user.is_active.username})
    form.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...