Метод ссылки зарегистрированного автора на созданную им статью не работает
Что-то не так с моим методом, assign_article_creator. Он должен заполнить поле custom_user именем пользователя (адресом электронной почты) вошедшего в систему пользователя/автора, чтобы автор был связан с любой созданной им статьей. Но это не работает. В Django Admin поле custom_user заполняется значением '----', когда автор создает статью. Пожалуйста, помогите мне. Спасибо.
models.py
class CustomUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(_('email address'), unique=True)
class Articles(models.Model):
custom_user = models.ForeignKey(CustomUser, default=None, null=True,
on_delete=models.SET_NULL)
views.py
class CreateArticle(LoginRequiredMixin, CreateView):
model = Articles
form_class = ArticleForm
template_name = "users/add_article.html"
def assign_article_creator(self, request):
if request.method == 'POST':
form = self.form_class(request, data=request.POST)
if form.is_valid():
instance = form.save(commit=False)
instance.custom_user = request.user
instance.save()
return render(request=request,
template_name ="users/add_article.html", context={"form":
form})
Когда вы расширяете CreateView, вы не можете добавить в класс любое имя метода и ожидать, что он будет работать автоматически. Вместо этого вам нужно переопределить post() с пользовательской логикой для назначения custom_user. (Возможно, вы захотите назвать его author.) Вы также можете использовать super().post(), чтобы сделать большую часть работы за вас. Обратите внимание, что когда вы переопределяете post(), вам не нужно if request.method == 'POST':, потому что CreateView уже делает это за вас.