Я хочу добавить теги к сообщениям в моем приложении 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.