前提・実現したいこと
djangoでメッセージを送る時、ユーザー詳細ページから DMを送る を押すと、その人に送られるようにしたい。しかしホームのページから飛んだ時は相手を選べるようにしたい。
該当のソースコード
Python
1# models.py 2class DM(models.Model): 3 owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name="dm_owner") 4 user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="dm_user") 5 content = models.CharField(max_length=250) 6 dm_at = models.DateTimeField(auto_now_add=True) 7 8 def __str__(self): 9 return str(self.owner) + " が " + str(self.user) + " にDM " + \ 10 str(self.dm_at.month) + "/" + str(self.dm_at.day) + ")" 11 12 class Meta: 13 ordering = ["-dm_at"]
Python
1# forms.py 2class DMForm(forms.ModelForm): 3 # 後から 選択肢を追加 4 user = forms.fields.ChoiceField(widget=forms.widgets.Select) 5 class Meta: 6 model = DM 7 fields = ["content"]
Python
1# views.py 2def dm(request): 3 if request.method == "POST": 4 form = DMForm() 5 else: 6 form = DMForm() 7 # フォローしている人の名前をセレクトできるようにformに入れる 8 flw = Follow.objects.filter(owner=request.user) 9 form.fields["user"].choices = [ 10 ("----", "----") 11 ] + [ 12 (item.user, item.user) for item in flw 13 ] 14 params = { 15 "form":form, 16 } 17 return render(request, "blog/dm.html", params)
Python
1urlpatterns = [ 2 path("dm/", views.dm, name="dm"), 3]
例えばTomというUserの詳細ページからDMを送る時、dm/Tom/ に行き、セレクトボックスにTomをデフォルトで入れたい。しかし、indexページから送る時はデフォルトは ---- で送る人が選ばれてない状態にしたい。
今現在urlパラメーターは渡してないのでセレクトボックスのデフォルトは---- で相手を選べるようになってる。
補足情報(FW/ツールのバージョンなど)
Python: 3.7.7
Django: 3.0.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。