【发布时间】:2022-01-20 19:56:17
【问题描述】:
我正在尝试在论坛上创建一个新帖子,它确实有效,我也在打印表单是否有效,但是当我在帖子没有发布后去检查时。在管理页面中,帖子在那里,已获批准,但缺少标签和类别字段。它们是在创建帖子时添加的,否则我会收到错误消息。但是我必须在管理页面中手动添加它们才能将帖子发布到论坛。
这是我在模型中的帖子
class Post(models.Model):
title = models.CharField(max_length=400)
slug = models.SlugField(max_length=400, unique=True, blank=True)
user = models.ForeignKey(Author, on_delete=models.CASCADE)
content = HTMLField()
categories = models.ManyToManyField(Category)
date = models.DateTimeField(auto_now_add=True)
approved = models.BooleanField(default=True)
tags = TaggableManager()
comments = models.ManyToManyField(Comment, blank=True)
# closed = models.BooleanField(default=False)
# state = models.CharField(max_length=40, default="zero")
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
super(Post, self).save(*args, **kwargs)
def __str__(self):
return self.title
这是我的意见.py
@login_required
def create_post(request):
context = {}
form = PostForm(request.POST or None)
if request.method == "POST":
if form.is_valid():
print("\n\n form is valid")
author = Author.objects.get(user=request.user)
new_post = form.save(commit=False)
new_post.user = author
new_post.save()
return redirect('forums')
context.update({
'form': form,
'title': 'Create New Post'
})
return render(request, 'forums/create_post.html', context)
html 很简单,可以测试一下。
<form method="POST">
{% csrf_token %}
{{form|crispy}}
<!-- Submit Post -->
<input type="submit" value="Save">
</form>
任何帮助将不胜感激
【问题讨论】:
标签: python html django django-models django-forms