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

回答編集履歴

2

修正したコード箇所の追記

2016/09/27 08:41

投稿

toritoritorina
toritoritorina

スコア972

answer CHANGED
@@ -59,12 +59,14 @@
59
59
  -------------------
60
60
  ご返信ありがとうございます、承知しました。
61
61
  では、ChooseEventモデルを以下のように変更するといかがですか。
62
+ 追加したのは、class Metaのunique_togetherです。
62
63
  ```python
63
64
  class ChooseEvent(TimeStampedModel):
64
65
  categories = models.ForeignKey(EventCategory, on_delete=models.CASCADE)
65
66
  area_list = models.ForeignKey(Area, on_delete=models.CASCADE)
66
67
  user = models.ForeignKey(User, on_delete=models.CASCADE)
67
68
 
69
+ # ここを追加!
68
70
  class Meta:
69
71
  unique_together = ('categories', 'user',)
70
72
 

1

返信みました!

2016/09/27 08:41

投稿

toritoritorina
toritoritorina

スコア972

answer CHANGED
@@ -51,4 +51,28 @@
51
51
  ・PROTECT (削除できないように保護する)
52
52
  ・SET_NULL (nullを入れる。null=True、等と指定しておかなくてはいけません)
53
53
  ...
54
- などで挙動が変更できます。
54
+ などで挙動が変更できます。
55
+
56
+
57
+ -------------------
58
+ 2016/09/27 17:30追記
59
+ -------------------
60
+ ご返信ありがとうございます、承知しました。
61
+ では、ChooseEventモデルを以下のように変更するといかがですか。
62
+ ```python
63
+ class ChooseEvent(TimeStampedModel):
64
+ categories = models.ForeignKey(EventCategory, on_delete=models.CASCADE)
65
+ area_list = models.ForeignKey(Area, on_delete=models.CASCADE)
66
+ user = models.ForeignKey(User, on_delete=models.CASCADE)
67
+
68
+ class Meta:
69
+ unique_together = ('categories', 'user',)
70
+
71
+ def __str__(self):
72
+ return str(self.user)
73
+ ```
74
+
75
+ これですと、taroがEvent1を一度選び保存すると、次回以降taroはEvent1で新たに保存しようとすると
76
+ エラーとなります。
77
+
78
+ いかがでしょうか。