Метод ссылки зарегистрированного автора на созданную им статью не работает

Что-то не так с моим методом, 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 уже делает это за вас.

Вернуться на верх