Как заставить пользователя написать отзыв о конкретном проекте
Я пытался создать форму, которая позволит пользователю оставить комментарий к определенному проекту, поэтому, когда я нажимаю кнопку отправить, появляется сообщение, что "данные успешно отправлены" без возникновения какой-либо ошибки, но, к сожалению, когда я проверяю базу данных, в таблице Review нет данных
Мой View.py
def project(request, pk):
projectObj = Project.objects.get(id=pk)
form = ReviewForm()
if request.method == 'POST':
form = ReviewForm(request.POST)
if form.is_valid():
review = form.save(commit=False)
review.project = projectObj
review.owner = request.user.profile
messages.success(request, "Your Review Was Successfully Submitted")
return redirect('project' , pk=projectObj.id) # pk=projectObj.id was used here because we r redirectong to a page that requires ID
return render (request, 'projects/single-project.html', {'project': projectObj, 'form': form})
Моя модель.py
class Review(models.Model):
VOTE_TYPE = (
('Up', 'Up Vote'),
('Down', 'Down Vote')
)
owner = models.ForeignKey(Profile, on_delete=models.CASCADE, null=True)
project= models.ForeignKey(Project, on_delete=models.CASCADE)
body = models.TextField(null=True, blank=True)
value = models.CharField(max_length=200, choices=VOTE_TYPE)
created = models.DateTimeField(auto_now_add=True)
id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)
class Meta:
unique_together = [['owner', 'project']]
def __str__(self):
return self.value
My Form.py
class ReviewForm(ModelForm):
class Meta:
model = Review
fields = ['value', 'body']
labels = {
'value' : 'Place your vote',
'body' : 'Add a comment with Your Vote',
}
def __init__(self, *args, **kwargs):
super(ReviewForm, self).__init__(*args, **kwargs)
for name, field in self.fields.items():
field.widget.attrs.update({'class':'input'})
```
My Template
```
<form class="form" action="{% url 'project' project.id %}" method="POST">
{% csrf_token %}
{% for field in form %}
<div class="form__field">
<label for="formInput#textarea">{{field.label}}</label>
{{field}}
</div>
{% endfor %}
<input class="btn btn--sub btn--lg" type="submit" value="Comments" />
</form>
```