Я хочу добавить теги к сообщениям в своем приложении Django.
Я могу добавить теги через интерфейс администратора, но когда я пытаюсь сделать это через созданную мной форму, я получаю IntegrityError.
Я не мог найти решение в существующих темах с той же ошибкой. Я пробежал makemigrations
и migrate
.
От models.py
:
class Post(models.Model):
title = models.CharField(null=False, blank=False)
text = models.TextField()
class Tag(models.Model):
post = models.ForeignKey('my_app.Post', on_delete=models.CASCADE, related_name='tags')
tag_text = models.CharField()
Вид:
def post_add_tags(request, pk):
post= get_object_or_404(Post, pk=pk)
if request.method == "POST":
form = TagForm(request.POST)
if form.is_valid():
tag = form.save()
tag.post= post
tag.save()
return redirect("single_post_view", pk=post.pk)
else:
form = TagForm()
return render(request, "add_tags.html", {"form": form})
Форма от forms.py
:
class TagForm(forms.ModelForm):
class Meta:
model = Tag
fields = ["tag_text"]
Шаблон:
<form method="POST"> {% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Add tags</button>
</form>
Ошибка:
IntegrityError в /post/4/add_tags/
Ошибка ограничения NOT NULL: my_app_tag.post_id
Я использую Django версии 2.2, Python 3.6.8.
tag = form.save()
, она должна бытьtag = form.save(commit=False)
- person Nalin Dobhal   schedule 11.06.2019