teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

改善

2020/03/17 03:09

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -10,7 +10,7 @@
10
10
  ValueError: invalid literal for int() with base 10: 'Vlog'
11
11
  ```
12
12
  ### 該当のソースコード
13
- ```views.py
13
+ ```views
14
14
  class BlogList(LoginRequiredMixin, TemplateView):
15
15
  model = Member
16
16
  template_name = 'blog/list.html'
@@ -25,7 +25,7 @@
25
25
  return context
26
26
  ```
27
27
 
28
- ```models.py
28
+ ```models
29
29
  class Status(models.Model):
30
30
  name = models.CharField(max_length=140, blank=True)
31
31
 
@@ -56,11 +56,11 @@
56
56
  return self.name
57
57
  ```
58
58
  ### 試したこと
59
- ```views.py
59
+ ```views
60
60
  context['all_posts'] = Post.objects.filter(status=member.status.all())
61
61
  ```
62
62
  ではこの段階では上手くいくが、
63
- ```list.html
63
+ ```list
64
64
  {% for post in all_posts %}
65
65
  {% endfor %}
66
66
  ```
@@ -69,4 +69,50 @@
69
69
  The QuerySet value for an exact lookup must be limited to one result using slicing.
70
70
  ```
71
71
  ### 補足情報
72
- python3.7.2
72
+ python3.7.2
73
+
74
+ ### さらなる情報追加
75
+ ```list
76
+ <!DOCTYPE html>
77
+ <html>
78
+ <head>
79
+
80
+ </head>
81
+ <body>
82
+ {% for member_status in member.status.all %}
83
+ <p>{{ member_status }}</p>
84
+ {% endfor %}
85
+ {% for post in all_posts %}
86
+ <div><a href="{% url 'blog:index' post.id %}">{{ post.summary }}</a></div>
87
+ <p>{{ post.status }}</p>
88
+ {% endfor %}
89
+ </body>
90
+ </html>
91
+ ```
92
+ ```views
93
+ def get_context_data(self, **kwargs):
94
+ context = super().get_context_data(**kwargs)
95
+ member = Member.objects.get(user=self.request.user)
96
+ context['member'] = member
97
+
98
+ status_list = ['Vlog', 'Beginner']
99
+ context['all_posts'] = Post.objects.filter(status=status_list)
100
+ #print(Post.objects.all().values())
101
+ return context
102
+ ```
103
+ 上記の場合のエラー画面
104
+ ![上記の場合のエラー画面](0fbef62dc45f8da6d1754db24e8ba432.png)
105
+
106
+ ```views
107
+ def get_context_data(self, **kwargs):
108
+ context = super().get_context_data(**kwargs)
109
+ member = Member.objects.get(user=self.request.user)
110
+ context['member'] = member
111
+
112
+ #status_list = ['Vlog', 'Beginner']
113
+ #context['all_posts'] = Post.objects.filter(status=status_list)
114
+ print(Post.objects.all().values())
115
+ return context
116
+ ```
117
+ 上記の場合の実行結果
118
+ ![上記の場合の実行結果](e5789a90188d6c101701f10c51977372.png)

4

改善

2020/03/17 03:09

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- Django: invalid literal for int() with base 10
1
+ Django: データベース操作
body CHANGED
File without changes

3

改善

2020/03/16 06:07

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -57,9 +57,16 @@
57
57
  ```
58
58
  ### 試したこと
59
59
  ```views.py
60
- objects.filter.all(status='Vlog')
60
+ context['all_posts'] = Post.objects.filter(status=member.status.all())
61
- objects.get(status='Vlog')
62
61
  ```
62
+ ではこの段階では上手くいくが、
63
+ ```list.html
64
+ {% for post in all_posts %}
65
+ {% endfor %}
66
+ ```
63
- へ変更して実行てみたが、同様の結果でした
67
+ で以下のエラーが発生してしまう
68
+ ```error
69
+ The QuerySet value for an exact lookup must be limited to one result using slicing.
70
+ ```
64
71
  ### 補足情報
65
72
  python3.7.2

2

改善

2020/03/15 07:58

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,8 @@
1
1
  ### 実現したいこと
2
- objects.filter(status='Vlog')で、statusがvlogである記事を取り出したいと思っています。
2
+ statusがMember(ログイン時のユーザ)が保持しているstatus(複数の可能性あり)である記事を取り出したいと思っています。
3
+ しかし、下記エラーが発生してしまいます。
3
- しかし、下記エラーが発生してしまいます。statusはCharFieldで宣言されているのでint型ではないと思うのですが、どのようにすれば解決出来るのか教えて頂けると幸いです。
4
+ どのようにすれば解決出来るのか教えて頂けると幸いです。
5
+ 可能性のみでもお願いします。
4
6
  よろしくお願いいたします。
5
7
 
6
8
  ### 発生している問題・エラーメッセージ
@@ -10,13 +12,16 @@
10
12
  ### 該当のソースコード
11
13
  ```views.py
12
14
  class BlogList(LoginRequiredMixin, TemplateView):
13
- model = Post
15
+ model = Member
14
16
  template_name = 'blog/list.html'
15
-
17
+
16
18
  def get_context_data(self, **kwargs):
17
19
  context = super().get_context_data(**kwargs)
20
+ member = Member.objects.get(user=self.request.user)
18
- #context['all_post'] = Post.objects.get(status='Beginner')
21
+ context['member'] = member
22
+
19
- context['all_post'] = Post.objects.filter(status='Vlog')
23
+ context['all_posts'] = Post.objects.filter(status=member.status)
24
+
20
25
  return context
21
26
  ```
22
27
 
@@ -40,6 +45,15 @@
40
45
  # 管理者画面でのプレビュー表示
41
46
  def formatted_markdown(self):
42
47
  return markdownify(self.contents)
48
+
49
+ class Member(models.Model):
50
+ name = models.CharField(max_length=140)
51
+ mail = models.EmailField(max_length=140)
52
+ status = models.ManyToManyField(Status)
53
+ user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
54
+
55
+ def __str__(self):
56
+ return self.name
43
57
  ```
44
58
  ### 試したこと
45
59
  ```views.py

1

改善

2020/03/15 07:52

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -15,7 +15,6 @@
15
15
 
16
16
  def get_context_data(self, **kwargs):
17
17
  context = super().get_context_data(**kwargs)
18
- user_info = Member.objects.get(user=self.request.user)
19
18
  #context['all_post'] = Post.objects.get(status='Beginner')
20
19
  context['all_post'] = Post.objects.filter(status='Vlog')
21
20
  return context