我创建了一个直接链接到我的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)
欢迎向正确方向提供任何帮助或建议。你知道吗
要使用标记,我建议使用django-taggit。它的使用非常简单。你知道吗
相关问题 更多 >
编程相关推荐