実現したいこと
statusがMember(ログイン時のユーザ)が保持しているstatus(複数の可能性あり)である記事を取り出したいと思っています。
しかし、下記エラーが発生してしまいます。
どのようにすれば解決出来るのか教えて頂けると幸いです。
可能性のみでもお願いします。
よろしくお願いいたします。
発生している問題・エラーメッセージ
error
1ValueError: invalid literal for int() with base 10: 'Vlog'
該当のソースコード
views
1class BlogList(LoginRequiredMixin, TemplateView): 2 model = Member 3 template_name = 'blog/list.html' 4 5 def get_context_data(self, **kwargs): 6 context = super().get_context_data(**kwargs) 7 member = Member.objects.get(user=self.request.user) 8 context['member'] = member 9 10 context['all_posts'] = Post.objects.filter(status=member.status) 11 12 return context
models
1class Status(models.Model): 2 name = models.CharField(max_length=140, blank=True) 3 4 def __str__(self): 5 return self.name 6 7class Post(models.Model): 8 title = models.CharField(max_length=140) 9 summary = models.TextField(blank=True) 10 contents = MarkdownxField() 11 status = models.ForeignKey(Status, on_delete=models.SET_NULL, null=True) 12 13 # 管理者画面での表示 14 def __str__(self): 15 return self.title 16 17 # 管理者画面でのプレビュー表示 18 def formatted_markdown(self): 19 return markdownify(self.contents) 20 21class Member(models.Model): 22 name = models.CharField(max_length=140) 23 mail = models.EmailField(max_length=140) 24 status = models.ManyToManyField(Status) 25 user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) 26 27 def __str__(self): 28 return self.name
試したこと
views
1context['all_posts'] = Post.objects.filter(status=member.status.all())
ではこの段階では上手くいくが、
list
1{% for post in all_posts %} 2{% endfor %}
で以下のエラーが発生してしまう。
error
1The QuerySet value for an exact lookup must be limited to one result using slicing.
補足情報
python3.7.2
さらなる情報追加
list
1<!DOCTYPE html> 2<html> 3<head> 4 5</head> 6<body> 7 {% for member_status in member.status.all %} 8 <p>{{ member_status }}</p> 9 {% endfor %} 10 {% for post in all_posts %} 11 <div><a href="{% url 'blog:index' post.id %}">{{ post.summary }}</a></div> 12 <p>{{ post.status }}</p> 13 {% endfor %} 14</body> 15</html>
views
1def get_context_data(self, **kwargs): 2 context = super().get_context_data(**kwargs) 3 member = Member.objects.get(user=self.request.user) 4 context['member'] = member 5 6 status_list = ['Vlog', 'Beginner'] 7 context['all_posts'] = Post.objects.filter(status=status_list) 8 #print(Post.objects.all().values()) 9 return context
views
1def get_context_data(self, **kwargs): 2 context = super().get_context_data(**kwargs) 3 member = Member.objects.get(user=self.request.user) 4 context['member'] = member 5 6 #status_list = ['Vlog', 'Beginner'] 7 #context['all_posts'] = Post.objects.filter(status=status_list) 8 print(Post.objects.all().values()) 9 return context
回答1件
あなたの回答
tips
プレビュー