私はブログのウェブサイトを作成しています。特定のライター/ユーザーが投稿したすべての記事を表示したいと思います。「Writer」モデルの子として「Post」モデルを作成しました。ユーザーのすべての記事をプロファイルに表示したいと思います。しかし、親クラス、つまりWriterクラスからPost(のタイトル)にアクセスできません。(インターネットからいくつかの回答を検索しました。役に立ちませんでした。)エラーが発生します:「Writer」オブジェクトに属性「post_set」がありません
class Writer(models.Model):
user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
email = models.EmailField(unique=True)
profile_pic = models.ImageField(default='profile.png', upload_to = 'Bloggers')
def __str__(self):
return self.user.username
class Post(models.Model):
title = models.CharField(max_length=25)
cover = models.ImageField(upload_to='Blog Image')
content = models.TextField()
post_writer = models.ForeignKey(Writer,null=True, related_name="tags", related_query_name="tag", on_delete=models.CASCADE)
def __str__(self):
return self.title
def profile(request, pk):
writer = Writer.objects.get(id=pk)
print(writer.post_set.all())
'Writer' object has no attribute 'post_set'
逆の関係の名前は、related_name=…
パラメーター[Django-doc]で指定されます。あなたが書いたので:
post_writer = models.ForeignKey(
Writer, null=True, related_name='tags',
related_query_name='tag', on_delete=models.CASCADE
)
これは、次の方法でこれらにアクセスすることを意味します。
def profile(request, pk):
writer = Writer.objects.get(id=pk)
print(writer.tags.all())
しかし、そもそもこれを/として指定するのはかなり奇妙に見えます。使ってみませんか?tags
tag
related_name='posts'
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加