Django Formunu Değiştir
Aug 19 2020
Kodumu, bir kullanıcının yeni bir gönderi için başka bir kullanıcı seçememesi için nasıl ayarlayabilirim? Oturum açmış kullanıcının otomatik olarak yazar olarak eklenmesini sağlamak istiyorum.
Views.py'deki alanlar kısmını sadece içerik alanına ayarlamayı denedim, ancak çalışmıyor
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>
Yanıtlar
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
El kullanarak kullanıcı değeri ekleyebilirsiniz request.user.username(veya) göz at bu . Soruyu soranın cevabı alt kısımda yer almaktadır.
AbhishekBera Aug 19 2020 at 00:37
Yapmanız gereken 3 şey var:
- Sayfayı, anonim kullanıcıların erişememesi için koruyun.
LoginRequiredMixin - Kullanıcıyı alanlardan kaldırın
- Form gönderildikten sonra,
form_validyöntemi kullanarak gönderilen forma mevcut kullanıcıyı girin
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)
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'