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:

  1. Sayfayı, anonim kullanıcıların erişememesi için koruyun. LoginRequiredMixin
  2. Kullanıcıyı alanlardan kaldırın
  3. 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)