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

回答編集履歴

2

修正

2020/06/29 09:24

投稿

ForestSeo
ForestSeo

スコア2724

answer CHANGED
@@ -3,7 +3,21 @@
3
3
  ```Python
4
4
  class Tag(models.Model):
5
5
  name = models.CharField(max_length=100)
6
+
6
7
  class Review(models.Model):
7
8
  # いろいろ
8
9
  tags = models.ManyToManyField(Tag, related_name="re_tags")
10
+ ```######----追記欄----
11
+ 上の`model`をマイグレーションした後、`admin`から`Tag`モデルに、"離乳食持ち込み可"などの評価を追加します。
12
+ そして、
9
- ```とかにして、選ばせる。
13
+ ```Python
14
+ class CheckForm(forms.Form):
15
+ choice = [(tag, tag.name) for tag in Tag.objects.all()]
16
+ select = forms.MultipleChoiceField(
17
+ choices=choice,
18
+ widget=forms.CheckboxSelectMultiple()
19
+ ```こんな感じでの`form`を作って、`POST`送信時に選択されたものを`.tags.add(・・, ・・)`で追加する。
20
+ `form`に自信がないですが...
21
+ ***
22
+ `ManyToMany`を使うことによって`filter`などが簡単操作できるので`ManyToMany`がいいとは思いますが、確かに簡単にラジオボタンとかチェックボックスに出来ないのは難点ですね。
23
+ 複数選択の評価チェックボックスを作り、選ばれたものをviews.pyで受け取り、追加という流れだとは思いますが。

1

修正

2020/06/29 09:24

投稿

ForestSeo
ForestSeo

スコア2724

answer CHANGED
@@ -1,1 +1,9 @@
1
- `Tag`のモデルを作って、レビューモデルと`ManyToManyField`で結べばいいのでは?
1
+ `Tag`のモデルを作って、レビューモデルと`ManyToManyField`で結べばいいのでは?
2
+ 例えば
3
+ ```Python
4
+ class Tag(models.Model):
5
+ name = models.CharField(max_length=100)
6
+ class Review(models.Model):
7
+ # いろいろ
8
+ tags = models.ManyToManyField(Tag, related_name="re_tags")
9
+ ```とかにして、選ばせる。