Изменить форму Джанго
Aug 19 2020
Как я могу настроить свой код, чтобы пользователь не мог выбрать другого пользователя для нового сообщения. Я хочу сделать так, чтобы авторизованный пользователь автоматически добавлялся в качестве автора.
Я попытался установить часть полей в views.py только для поля содержимого, однако это не работает.
модели.py
class post(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
content = models.CharField(max_length=140)
просмотры.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>
Ответы
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
Вы можете вручную вставить пользовательское значение, используя request.user.username
(или) Взгляните на это . Ответ спрашивающего расположен внизу.
AbhishekBera Aug 19 2020 at 00:37
Вам нужно сделать 3 вещи:
- Защитите страницу, чтобы анонимные пользователи не могли получить к ней доступ, используя
LoginRequiredMixin
- Удалить пользователя с полей
- Введите текущего пользователя в отправленную форму после публикации формы, используя
form_valid
метод
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)