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)
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi