Я знаю, что могу использовать сторонние библиотеки сообщений, но хочу научиться создавать свои собственные.Я изо всех сил пытался автоматически установить отправителя в моем CreateMessageForm
.
Моем коде ошибки: __init__() got an unexpected keyword argument 'sender'
Формы
class CreateMessageForm(forms.ModelForm):
reciever = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control form-control-sm','placeholder':'Send to'}))
title = forms.CharField(max_length=20, widget=forms.Textarea(attrs={'class':'form-control form-control-sm', 'placeholder':'Enter message subject', 'rows':'1'}))
msg_content = forms.CharField(widget=forms.Textarea(attrs={'class':'form-control form-control-sm', 'placeholder':'Writing your message', 'rows':'10'}))
class Meta:
model = Message
fields = (
'sender', 'reciever', 'title', 'msg_content',
)
def __init__(self, *args, **kwargs):
sender = kwargs.pop('sender') # To get request.user. Do not use kwargs.pop('user', None) due to potential security hole
super(CreateMessageForm, self).__init__(*args, **kwargs)
Просмотр
class MessageCreateView(CreateView):
model = Message
fields = ['sender', 'reciever', 'title', 'msg_content']
def get_form_kwargs(self):
"""This method is what injects forms with their keyword
arguments."""
# grab the current set of form #kwargs
kwargs = super(MessageCreateView, self).get_form_kwargs()
# Update the kwargs with the sender_id
kwargs['sender'] = self.request.user.id
return kwargs
Модели
class Message(models.Model):
sender = models.ForeignKey(User, related_name="sender", on_delete=models.CASCADE)
reciever = models.ForeignKey(User, related_name="reciever", on_delete=models.CASCADE)
title = models.CharField(max_length=20)
...
Я смотрел на другие темы, но не смог это исправить.
Я попытался выполнить следующее __ init __ () получилнеожиданный аргумент ключевого слова 'user'
Как я могу это исправить, чтобы моя форма автоматически заполняла сообщение "отправитель" автоматически?