Python 在我的Django表格中,我';我无法将标签保存到新创建的帖子

Python 在我的Django表格中,我';我无法将标签保存到新创建的帖子,python,django,Python,Django,我已经创建了一个直接链接到我的帖子模型的表单。我可以创建并保存一个帖子。但是由于某些原因,除非我进入django管理员,否则我无法将标签保存到帖子中。这是我的密码: forms.py: from django import forms from .models import Post class PostForm(forms.ModelForm): class Meta: model = Post fields = [ "title", "co

我已经创建了一个直接链接到我的帖子模型的表单。我可以创建并保存一个帖子。但是由于某些原因,除非我进入django管理员,否则我无法将标签保存到帖子中。这是我的密码:

forms.py:

from django import forms

from .models import Post

class PostForm(forms.ModelForm):
class Meta:
    model = Post
    fields = [
        "title",
        "content",
        "image",
        "draft",
        "publish",
        "tags",
    ]
models.py:

from django.conf import settings
from django.core.urlresolvers import reverse
from django.db import models
from django.db.models.signals import pre_save
from django.utils.text import slugify
from django.utils import timezone



class Post(models.Model):
  user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
  slug = models.SlugField(unique=True)
  title = models.CharField(max_length=120)
  image = models.ImageField(upload_to=upload_location, null=True, blank=True,
                            width_field="width_field",
                            height_field="height_field")
  height_field = models.IntegerField(default=0)
  width_field = models.IntegerField(default=0)
  content = models.TextField()
  draft = models.BooleanField(default=False)
  publish = models.DateField(auto_now=False, auto_now_add=False)
  timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
  updated = models.DateTimeField(auto_now=True, auto_now_add=False)
  tags = models.ManyToManyField(Tag)

  objects = PostManager()

  def __str__(self):
      return self.title

  def get_absolute_url(self):
      return reverse("posts:detail", kwargs={"slug": self.slug})

  class Meta:
      ordering = ["-timestamp"]


class Tag(models.Model):
  title = models.CharField(max_length=250)
  slug = models.SlugField(max_length=200, unique=True)
  timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
  updated = models.DateTimeField(auto_now=True, auto_now_add=False)

  def __str__(self):
      return self.title

  def get_absolute_url(self):
      return reverse("posts:tag_index", kwargs={"slug": self.slug})

  class Meta:
      ordering = ["-timestamp"]
post_form.html

{% extends "posts/base.html" %}
{% load crispy_forms_tags %}

{% block content %}
<div class="container">
    <div class="col-sm-6 col-sm-offset-3">
    <h1>Edit: {{ title }}</h1>



    <form method='post' action=''  enctype="multipart/form-data">{% csrf_token %}
        {{ form|crispy }}
        <input type="submit" class="btn btn-default" value="Create Post">
    </form>

    <a href="{% url 'posts:list' %}">cancel</a>
    </div>
</div>
{% endblock content %}}

欢迎向正确方向提供任何帮助或建议。

要使用标签,我建议。它的使用非常简单。

你对此有何看法?@ShangWang我刚刚添加了它。在你的视图中,你在哪里将
标签保存到
帖子中了?你有没有尝试过不使用crispy标签来查看它是否有效?这是答案吗。。。
def post_create(request):
    if not request.user.is_staff or not request.user.is_superuser:
        raise Http404
    form = PostForm(request.POST or None, request.FILES or None)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.user = request.user
        instance.save()

        messages.success(request, "Created !!")
        return HttpResponseRedirect(instance.get_absolute_url())
    else:
        messages.error(request, "not Created !!")
    context = {
        "form": form,
        "title": "Create Form"
    }
    return render(request, "posts/post_form.html", context)