2017-03-14 13 views
0

Django 1.8.6とPython 3.6を使用しています。私は、ブログを作成しようとすると、ジャンゴとPythonにはかなり新しいです。データベースからデータを取得できません。それはデータベースデータベースからデータが取得されません

にあるにもかかわらず、このモデルを扱う私のmodel.py

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, 
          blank=True, 
          null=True,) 
      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() # The default manager 
      published = PublishedManager() # custom manager 

      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 
     ]) 

ビューは

def post_detail(request, year, month, day, post): 
    post = get_list_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}) 

私たちのデータに

<p>Published {{ post.pulish }} by {{ post.author }}</p> 

を取得するためのHTMLテンプレートです出力は "Published by"

です。

しかし、私はちょうど

{{ posts }} 

を使用するとき、私はがデータベース

に保存された記事のタイトルである "これは私である" 出力

[<Post: this is Me>]

を取得事前に感謝しますr時間と労力。あなたが問題が何であるか私に知らせるなら、大きな助けになるでしょう。

答えて

2

のデータを取得するためのforループを使用する必要があるコードで

をループを書いていましたあなたは寿Postオブジェクトのリストをiterrateしたくない場合はそう

{% for post in posts %} 

    < your stuff here > 

{% endfor %} 

のようなテンプレートで記事のリストをiterrateインデックスでオブジェクトを取得

post = get_object_or_404(
    Post, 
    slug=post, 
    status='published', 
    publish__year=year, 
    publish__month=month, 
    publish__day=day) 

をしたり、テンプレート内:LDのいずれかのビューで1つのPostオブジェクトを取得

<p>Published {{ post.0.publish }} by {{ post.0.author }}</p> 

0は、レコードのインデックスである

3

あなたのHTMLテンプレートは、結果セット(単一のポストがあっても)

{% for post in posts %} 

    <p>Published {{ post.publish }} by {{ post.author }}</p> 

{% endfor %} 

を反復処理する必要があり、それがpublish代わりのpulish

それとも、したくない場合でなければなりませんあなたが行うことができ、結果セットを反復処理する0は番目の指標である

<p>Published {{ post.0.publish }} by {{ post.0.author }}</p>

最初のレコード。

これは、データベースでは常に結果セットと呼ばれるものが返されるためです。これは、使用するプログラミング言語に関係なく、一連の行です。だから、このアプローチが必要です。

+2

またはあなたが行う場合ではありませんあなたができる結果セットを繰り返したいと思う '

{{post.0.author}}

によって公開された{{post.0.publish}}' 0はインデックスです – latsha

+1

yes @latsha彼がしたいかどうかの質問私はこれをこのように残しました。 – e4c5

+0

ありがとう、それは助けた。私はちょうど1つを表示する必要があるので、それを残念。しかし、なぜこのような繰り返しが必要なのか不思議です –

0

は、あなたは関係なく、あなたが必要がありますので、あなたがPostオブジェクトのリストを取得するどのように多くのエントリがあなたのデシベルであなたのビューで

{% for post in posts %} 

< your stuff here > 

{% endfor %} 
関連する問題