因此,我正在创建一个令人费解的应用程序,在那里,您可以提交解决方案的拼图,并添加评论的解决方案。
以下是我的模特:
class Solution(models.Model):
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
)
puzzle = models.ForeignKey(
Puzzle,
on_delete=models.CASCADE,
)
title = models.CharField(max_length=30)
content = models.TextField()
points = models.IntegerField()
datetime = models.DateTimeField(default=timezone.now, blank=True)
def __str__(self):
return self.title
class Comment(models.Model):
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
)
solution = models.ForeignKey(
Solution,
on_delete=models.CASCADE,
)
title = models.CharField(max_length=30)
content = models.TextField()
datetime = models.DateTimeField(default=timezone.now, blank=True)
def __str__(self):
return self.title我正在尝试使用标准Django表单来实现Add注释特性。以下是我的看法:
if request.method == "POST":
# Add Comment feature
form = AddCommentForm(request.POST)
if form.is_valid():
comment = form.save(commit=False)
comment.user = request.user
comment.solution = Solution.objects.get(id=solutionID)
## Debugging ##
print(comment.title)
print(comment.content)
print('Solution:')
print(comment.solution)
print('Puzzle: ')
print(comment.solution.puzzle)
print(comment.solution.puzzle.id)
###############
comment.save()
messages.success(request, 'Solution was created successfully!')
return HttpResponseRedirect(reverse("solutions", kwargs={'puzzleID': puzzleID}))
else:
messages.warning(request, 'There are some errors on the form.')
return render(request, "add_solution.html", {
"form": form,
})当然还有我的表格:
class AddCommentForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(AddCommentForm, self).__init__(*args, **kwargs)
self.fields['title'].widget.attrs['placeholder'] = 'Title'
self.fields['content'].widget.attrs['placeholder'] = 'Content'
title = forms.CharField()
content = forms.CharField(
widget = forms.Textarea(attrs={"rows": 6,}),
)
class Meta:
model = Solution
fields = ['title', 'content']当我尝试使用这个特性时,Django给出了上面提到的错误。我对这个错误的理解是Django认为我没有为这个评论提供一个有效的解决方案。但是,您会注意到,我在视图中使用了print语句,以确保我传递的是有效值,因此我知道我正在传递一个有效的解决方案,该解决方案链接到一个有效的难题。
因此,我似乎无法理解错误信息。谁来帮帮忙!
谢谢您:)
发布于 2018-03-16 09:38:40
尽管您已经调用了表单AddCommentForm,但它实际上将其模型声明为解决方案,而不是在Meta类中进行注释。因此,Django认为您正在尝试创建一个新的解决方案,这需要一个难题。
我认为这是一个错误,你打算在那里使用评论。
https://stackoverflow.com/questions/49317271
复制相似问题