Reputation: 17
I have two models, Question and Answer. I am getting this error when I try to add an answer from user side. (adding from admin panel is okay). I have gone through few solutions in stackoverflow and other site. I everytime I deleted existing database and ran migrations, but nothing worked. Here is my code:
models.py
from django.conf import settings
from django.db import models
from django.utils import timezone
class Question(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=300)
optional_description = models.TextField(blank=True, null=True)
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
class Answer(models.Model):
question = models.ForeignKey('ask.Question', on_delete=models.CASCADE, related_name='answers')
author = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
approved_answer = models.BooleanField(default=False)
def approve(self):
self.approved_answer = True
self.save()
def __str__(self):
return self.text
relevant section from views.py
def add_answer_to_que(request, pk):
que = get_object_or_404(Question, pk=pk)
if request.method == 'POST':
form = AnswerForm(request.POST)
if form.is_valid():
answer = form.save(commit=False)
answer.que = que
answer.save()
return redirect('ques_detail', pk=que.pk)
else:
form = AnswerForm()
return render(request, 'ask/add_answer_to_que.html', {'form': form})
forms.py
class AnswerForm(forms.ModelForm):
class Meta:
model = Answer
fields = ('author', 'text',)
Clicking writing an answer button leads to This page
But after adding something and clicking send leads to this error.
Upvotes: 0
Views: 483
Reputation: 3170
The mistake is in line answer.que = que
.
just change that line to answer.question = que
As you don't have any column named que
in Answer
table.
Hope it helps.
Upvotes: 1