質問編集履歴

3

タイトル変更

2018/05/02 02:48

投稿

isshi
isshi

スコア11

test CHANGED
@@ -1 +1 @@
1
- データセットによるモデルの更新について
1
+ クエリセットによるモデルの更新について
test CHANGED
File without changes

2

内容追加

2018/05/02 02:48

投稿

isshi
isshi

スコア11

test CHANGED
File without changes
test CHANGED
@@ -76,6 +76,14 @@
76
76
 
77
77
  このクエリセットをBookモデルのidをもとにimpressionCount列にimpre_countをセットしたいと思っています。
78
78
 
79
+ {'id': 1, 'impre_count': 2}
80
+
81
+ {'id': 2, 'impre_count': 1}
82
+
83
+ {'id': 6, 'impre_count': 3}
84
+
85
+ {'id': 7, 'impre_count': 1}
86
+
79
87
 
80
88
 
81
89
  views.pyにどのような記述をすればいいのか分からず止まっている状態です。

1

全体内容を修正

2018/05/02 02:47

投稿

isshi
isshi

スコア11

test CHANGED
@@ -1 +1 @@
1
- 親子関係のモルにおけるデータ取得や集計処理とその結果によるモデル更新について
1
+ データセットによるモデル更新について
test CHANGED
@@ -1,14 +1,8 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- 親子関係のあるモデルで子モデルのインスタンス数や特定カラムの合計値を
3
+ カウントしたクエリセットをモデルの特定カラムにセットしたいと思っています。
4
4
 
5
- 親モデルの特定カラムに持たせたいと思っています。
6
-
7
- 以下は書籍とその感想モデルで、子である感想数と子毎の読書日数の総計を親である書籍モデルの特定カラム(感想数、総読書回数)に保持更新させるにはview.pyでどのようなコードにすれば良いでしょうか。
8
-
9
- よろしくお願いします。
5
+ ご教授のほどよろしくお願いします。
10
-
11
-
12
6
 
13
7
 
14
8
 
@@ -34,12 +28,6 @@
34
28
 
35
29
  class Book(models.Model):
36
30
 
37
- class Meta:
38
-
39
- db_table = 'book'
40
-
41
-
42
-
43
31
  name = models.CharField('書籍名', max_length=255)
44
32
 
45
33
  publisher = models.CharField('出版社', max_length=255, blank=True)
@@ -62,12 +50,6 @@
62
50
 
63
51
  class Impression(models.Model):
64
52
 
65
- class Meta:
66
-
67
- db_table = 'impression'
68
-
69
-
70
-
71
53
  book = models.ForeignKey(Book, verbose_name='書籍', related_name='impressions', on_delete=models.CASCADE)
72
54
 
73
55
  comment = models.TextField('コメント', blank=True)
@@ -86,31 +68,17 @@
86
68
 
87
69
  ### 試したこと
88
70
 
89
- ■view.py
71
+ 上記モデルから以下のクエリを発行しました。
72
+
73
+ a = Book.objects.filter(impressions__isnull=False).values('id').annotate(impre_count=Count('id'))
90
74
 
91
75
 
92
76
 
93
- class BookList(ListView):
94
-
95
- """書籍一覧"""
77
+ クエリセットをBookモデルのidをもとにimpressionCount列にimpre_countをセットしたいと思っています。
96
-
97
- context_object_name = 'books'
98
-
99
- template_name = 'book_list.html'
100
-
101
- paginate_by = 7 # 1ページは最大7件ずつでページングする
102
78
 
103
79
 
104
80
 
105
- def get(self, request, *args, **kw):
106
-
107
- """書籍に紐づく感想からデータを取得&集計し、その値を書籍モデルの特定カラムにセット更新する"""
108
-
109
-   
110
-
111
- context = self.get_context_data(object_list=self.object_list)
112
-
113
- return self.render_to_response(context)
81
+ views.pyにどのような記述をすればいいのか分からず止まっている状態です。
114
82
 
115
83
 
116
84