2016-06-29 9 views
0

私は単純な投稿とコメントページを作成しています。これは、投稿にコメントすると、そのコメントをデータベースに保存しようとしています。 id.Butを使用してコメントが投稿された投稿のタイトルです。投稿するには、comments.post_title = header.titleを実行してPost_Commentのpost_title属性をインスタンス化しようとすると、「u'kjashdkh」を割り当てることができません: Post_Comment.post_title "は" Post "インスタンスでなければなりません。 「kjashdkh」は投稿タイトルです。djangoデータベースのブログの投稿にコメントオブジェクトを保存する

class Post(models.Model): 
    title= models.CharField (max_length=100) 

    body= models.TextField() 

    created=models.DateTimeField() 

    def __str__(self): 
     return self.title 



class Post_Comment(models.Model): 
    comment= models.TextField() 
    post_title=models.ForeignKey(Post) 

そして、私の見解は以下のとおりです。

def comment(request,pk): 
    header=Post.objects.get(id=pk) 
    comments=Post_Comment(comment=request.POST['comment']) 
    comments.post_title=header.title 
    header.delete() 

    comments.save() 
    return HttpResponseRedirect('/blog/') 
+0

エラーはかなり明確です。 'Post_title = models.ForeignKey(Post)'を 'Post'オブジェクトを期待するように設定しましたが、' CharField'または 'string 'オブジェクトである' header.title'を与えています。あなたがDjangoの外部キーがどのように機能するかについての基本的な誤解があるようです。チュートリアルを読んだことはありますか? –

+0

ありがとうございます。私はforeignkeyを使用して少し新しいです。しかし、私はこの問題をいかに修正すべきですか? –

+0

'comments.post_title = header'だと思いますが、次の行でブログ投稿(' header.delete() ')を削除することはできません。より正確な変数名を考慮する必要があります。ブログの投稿「ヘッダー」とそれへの参照を後で「post_title」と呼ぶと、これは非常に分かりにくいものになります。 –

答えて

0
def comment(request,pk): 
    post = Post.objects.get(id=pk) 

    comment = Post_Comment.objects.create(post_title=post, comment=request.POST['comment']) 

    return HttpResponseRedirect('/blog/') 

が命名については注意してください。あなたのモデルは次のような形になるはずです。

class Post(models.Model): 
    title = models.CharField(max_length=100) 
    body = models.TextField() 
    created = models.DateTimeField(auto_now_add=True) 
    def __str__(self): 
     return self.title 

class Comment(models.Model): 
    body = models.TextField() 
    post = models.ForeignKey(Post, related_name='comments') 
+0

related_nameがどのような目的で追加されたのかわかりません –

+0

便宜のために...その名前を逆関係に使うことができます: 'post.comments.all()'。 – ohrstrom

+0

ええ、結局。もう1つの質問。私はリストビューを使用してすべての最近の投稿を表示しています。そのために私が提供しているクエリーセットはPostモデルです。私は質問をPost_Commentモデルに設定し、そのポスト属性を使ってPostモデルにアクセスできます。私の投稿とそれぞれのコメントは、すべて単一のurl構成を使用して表示されます –

関連する問題