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_valid
yö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ı
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı