私はソーシャルプラットフォームを開発していますが、現在ユーザーの投稿に似た機能をコーディングしています。しかし、私はそれを動作させるように見えることはできません。これらは私のModels.pyです:Djangoのような機能
class Post(models.Model):
user = models.ForeignKey(User)
posted = models.DateTimeField(auto_now_add=True)
content = models.CharField(max_length=150)
picturefile = models.ImageField(upload_to="post_content", blank=True)
class Like(models.Model):
user = models.ForeignKey(User, null=True)
post = models.ForeignKey(Post, null=True)
私は 'post_idの' のように、その後、私の意見では、私のURLからポストIDを渡します
def liking(request, post_id):
newlike = Like.objects.create()
newlike.post = post_id
newlike.user = request.user
newlike.save()
return redirect(reverse('dashboard'))
はしかし、それは次のエラーが返されます。
Cannot assign "'47'": "Like.post" must be a "Post" instance.
誰かが私が行方不明または間違っていることを知っていますか?
をなぜようなモデルのリターンで私の「ポスト」ユーザー名ですか?コンテンツの代わりに? – Acework
'print newlike.post'のように、ユーザー名が返されますか?これは実際に 'Post'モデルの中で' __unicode __() '(Python 2を使用する場合)または '__str __()'(Python 3の場合)メソッドで定義されます。このメソッドは、そのオブジェクトに対して 'print'を実行するときに実際の文字列表現を返すべきです。 –
いいえ、私はモデルオブジェクトそのものを意味しています(post = models.ForeignKey(Post、null = True))。私がデータベースに行くとき、私は誰(この場合はユーザオブジェクト)がどのポスト(ポストオブジェクト)を好きであったかを見たいと思っています。ユーザーオブジェクトはユーザーのユーザー名を正しく返しますが、投稿オブジェクトもユーザー名を返します。投稿のコンテンツ自体ではなく、投稿の所有者からのユーザー名。 – Acework