Alter Django Form
Aug 19 2020
Bagaimana cara menyesuaikan kode saya sehingga pengguna tidak dapat memilih pengguna lain untuk posting baru. Saya ingin membuatnya sehingga pengguna yang login secara otomatis ditambahkan sebagai penulis.
Saya telah mencoba mengatur bagian bidang di views.py menjadi hanya bidang konten, namun tidak berhasil
models.py
class post(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
content = models.CharField(max_length=140)
views.py
class CreatePostView(CreateView):
model = post
fields = '__all__'
template_name = 'users/create.html'
Myform.html
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Login">
</form>
Jawaban
1 bkrop Aug 18 2020 at 23:50
class CreatePostView(CreateView):
model = post
template_name = 'users/create.html'
fields = ['content']
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
MukheemMohammed Aug 18 2020 at 23:51
Anda dapat secara manual memasukkan nilai pengguna menggunakan request.user.username
(atau) . Lihat ini . Jawaban penanya ada di bagian bawah.
AbhishekBera Aug 19 2020 at 00:37
Ada 3 hal yang perlu Anda lakukan:
- Lindungi halaman, sehingga pengguna anonim tidak dapat mengaksesnya, Menggunakan
LoginRequiredMixin
- Hapus pengguna dari bidang
- Masukkan pengguna saat ini dalam formulir yang dikirimkan setelah formulir diposting, menggunakan
form_valid
metode
from django.views.generic.edit import CreateView
from django.contrib.auth.mixins import LoginRequiredMixin
class CreatePostView(LoginRequiredMixin, CreateView):
model = Post
fields = ["content"]
template_name = "create.html"
def form_valid(self, form):
form.instance.user = self.request.user
return super().form_valid(form)
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'