在我的Django表单中,我无法将标记保存到新创建的pos

2024-04-26 22:21:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

你知道吗表单.py地址:

from django import forms

from .models import Post

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

你知道吗型号.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"]

岗位_表单.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 %}}

我的视图.py地址:

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)

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


Tags: djangofromimportselfformfalsetruefield