2017-06-10 11 views
2

views.pyからmodelsの "published"という選択肢パラメータを選択するにはどうすればいいですか? models.pyでは、私はchoices[draft,published]のオプションを与えました。views(models)のチェック(models)のためのviews.pyを書く方法

私はフォームを使用して入力を収集し、データベースに保存しています。これ以外のすべてのコンテンツは正常に動作しています。

NameError定義されていない/ブログ/ポスト/新/

名 '公開' での

models.py:

from django.db import models 
from django.utils import timezone 
from django.contrib.auth.models import User 
from django.core.urlresolvers import reverse 

class PublishedManager(models.Manager): 
    def get_queryset(self): 
     return super(PublishedManager,self).get_queryset().filter(status='published') 

class Post(models.Model): 
    STATUS_CHOICES=(
     ('draft','Draft'), 
     ('published','Published'), 
    ) 
    title=models.CharField(max_length=250) 
    slug=models.SlugField(max_length=250,unique_for_date='publish') 
    author=models.ForeignKey(User,related_name='blog_posts') 
    body=models.TextField() 
    publish=models.DateTimeField(default=timezone.now) 
    created=models.DateTimeField(auto_now_add=True) 
    updated=models.DateTimeField(auto_now=True) 
    status=models.CharField(max_length=10,choices=STATUS_CHOICES,default='draft') 
    objects=models.Manager() 
    published=PublishedManager() 

views.py

from django.shortcuts import render, get_object_or_404 
from django.utils import timezone 
import datetime 
from .models import Post 
from .forms import PostForm 


def post_list(request): 
    posts = Post.published.all() 
    return render(request,'blog/post/list.html', {'posts':posts}) 

def post_detail(request,year,month,day,post): 
    post = get_object_or_404(Post, slug=post, status='published', publish__year=year, publish__month=month, publish__day=day) 
    return render(request, 
        'blog/post/detail.html', 
        {'post':post}) 

def post_new(request): 
    if request.method == "POST": 
     form = PostForm(request.POST) 
     if form.is_valid(): 
      post = form.save(commit=False) 
      post.author = request.user 
      post.published = timezone.now() 
      post.slug=post.title 
      post.status=Published 
      post.save() 
      return redirect('post_detail', pk=post.pk) 
    else: 
     form = PostForm() 
    return render(request, 'blog/post/post_edit.html', {'form': form}) 
+1

ここに正確に掲載されているものは 'post.status = Published'です – e4c5

答えて

0

変更線、

post.status = 'published' 

引用符で囲みます。

関連する問題