2017-04-15 5 views
0

私はdjangoを初めて使用しています。私はいくつかの提案を試みましたが、動作させることはできません。カテゴリセクションを持つブログ投稿モデルを作成し、テンプレートのカテゴリにリンクしようとしています。私のコードは以下の通りです。テンプレートのカテゴリセクションを作成してリンクするにはどうすればよいですか?

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


# Create your models here. 

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


class MoneyManager(models.Manager): 
    def get_queryset(self): 
     return super(MoneyManager, self).get_queryset().filter(category='money') 


class LoveManager(models.Manager): 
    def get_queryset(self): 
     return super(LoveManager, self).get_queryset().filter(category='love') 


class WeightlossManager(models.Manager): 
    def get_queryset(self): 
     return super(WeightlossManager, self).get_queryset().filter(category='weightloss') 


def get_image_filename(instance, filename): 
    title = instance.post.title 
    slug = slugify(title) 
    return "post_images/%s-%s" % (slug, filename) 


class Post(models.Model): 
    STATUS_CHOICES = (
     ('draft', 'Draft'), 
     ('published', 'Published'), 
    ) 
    CATEGORY_CHOICES = (
     ('money', 'Money'), 
     ('love', 'Love'), 
     ('weightloss', 'Weightloss') 
    ) 
    title = models.CharField(max_length=250) 
    slug = models.SlugField(max_length=250, 
          unique_for_date='publish') 
    author = models.ForeignKey(User, related_name='blog_posts') 
    image = models.ImageField(upload_to='get_image_filename', verbose_name='Image', blank=True) 
    body = models.TextField() 
    image2 = models.ImageField(upload_to='get_image_filename', verbose_name='Image', blank=True) 
    body2 = models.TextField(blank=True) 
    image3 = models.ImageField(upload_to='get_image_filename', verbose_name='Image', blank=True) 
    body3 = models.TextField(blank=True) 
    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() 
    category = models.CharField(max_length=10, choices=CATEGORY_CHOICES) 
    money = MoneyManager() 
    love = LoveManager() 
    weightloss = WeightlossManager() 
    tags = TaggableManager() 

    class Meta: 
     ordering = ('-publish',) 

    def __str__(self): 
     return self.title 

    def get_absolute_url(self): 
     return reverse('blog:post_detail', 
         args=[self.publish.year, 
          self.publish.strftime('%m'), 
          self.publish.strftime('%d'), 
          self.slug]) 


class Comment(models.Model): 
    post = models.ForeignKey(Post, related_name='comments') 
    name = models.CharField(max_length=80) 
    email = models.EmailField() 
    body = models.TextField() 
    created = models.DateTimeField(auto_now_add=True) 
    updated = models.DateTimeField(auto_now=True) 
    active = models.BooleanField(default=True) 

    class Meta: 
     ordering = ('created',) 

    def __str__(self): 
     return 'Comment by {} on {}'.format(self.name, self.post) 
     4e2 
     aaefb22cf2adc42680d 
     ' -H ' 
     Content - Type: multipart/form - data 
     ' -POST http://127.0.0.1:8000/api/scan_binary/ -F [email protected]/Users/a.b.gopalakrishna/Desktop/tele.apk -F uuid=a996a142e1ef4a6e9e29dd7f6baf120bfsfds 

3つのカテゴリ(お金、愛、ウェイトロス)を表示するカテゴリと呼ばれるテンプレートをテンプレートに追加したいと考えています。

どうすればいいですか、これを表示するにはテンプレートをどのようにコードするのですか?ありがとう!

答えて

0

あなたはそれを行うため_meta.get_field.("category").choicesまたはget_category_displayを使用するか、直接フィールドの選択CATEGORY_CHOICESdictそう等に変換することができます:

def convert_dict_choice(self): 
      category_dict = dict(self.CATEGORY_CHOICES) 
      return category_dict 

したがって、あなたはyはあなたのresponseにコンテキストとして渡して、あなたのviewに呼び出すことができます

def select_options(request): 
    category_select = Post().convert_dict_choice() 
    return render(
     request, "template/name_template.html",   
     {"data_select":category_select} 
    ) 

その後、テンプレートはあなたがそうのように行うことができます:あなたのテンプレートのための、のようなので、

{% extends "base.html" %} 
{% block content %} 
    <div class="category"> 
     <h1>Seccion category</h1> 
     <select name="services" id="services"> 
      {% for category_selectvice in data_select %} 
        <option>{{category_selectvice}}</option>  
      {% endfor %} 
     </select> 
    </div> 
{% endblock content %} 

詳細については、django Doc djangoのドキュメントをご覧ください。

関連する問題