При попытке добавить ссылку к метке поля формы возникает ошибка __init __ () получил неожиданный аргумент ключевого слова 'initial'

Когда я пытаюсь добавить ссылку в метку поля UserCreationForm, я получаю ошибку __init __ () got an unexpected keyword argument 'initial'. Мой код выглядит следующим образом:

#forms.py
class RegisterUserForm(UserCreationForm):
    email = forms.EmailField(required=True, label='Адрес электронной почты')
    check = forms.BooleanField()

    def __init__(self):
        super(RegisterUserForm, self).__init__()
        self.fields['check'].label = 'Принимаю политику конфиденциальности' % reverse('user:privacy')

    class Meta:
        model = AdvUser
        fields = ('username', 'email', 'password1', 'password2', 'check')

views.py выглядит следующим образом:

#views.py 
class RegisterUserView(SuccessMessageMixin, CreateView):
    model = AdvUser
    template_name = 'users/register_user.html'
    form_class = RegisterUserForm
    success_url = reverse_lazy('articles:list_view')
    success_message = 'Вы успешно зарегистрировались!'

    def form_valid(self, form):
        valid = super(RegisterUserView, self).form_valid(form)
        username, password = form.cleaned_data.get('username'), form.cleaned_data.get('password1')
        new_user = authenticate(username=username, password=password)
        login(self.request, new_user)
        return valid

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        # 5 тегов с наибольшим количеством публикаций
        context['tags_list'] = Tag.objects.annotate(articles_quantiy=Count('taggit_taggeditem_items')).order_by(
            '-articles_quantiy')[:10]
        context['securities_types_list'] = StocksETFsBonds.objects.all()
        return context

Как я могу решить эту проблему?

Эта ошибка вызвана тем, что __init__ теперь не принимает ни args, ни kwargs:

    def __init__(self): # Not expecting anything

Необходимо сохранить args и kwargs, поэтому просто измените его на:

class RegisterUserForm(UserCreationForm):
    ...
    def __init__(self, *args, **kwargs): # Add back args and kwargs
        super(RegisterUserForm, self).__init__(*args, **kwargs) # And pass to parent

Когда я изменил def __init__ на приведенный ниже код, на странице регистрации появилась правильная ссылка:

def __init__(self, *args, **kwargs):
    super(RegisterUserForm, self).__init__(*args, **kwargs)
    self.fields['check'].label = mark_safe('Принимаю <a href=%s> политику конфиденциальности</a>' % reverse_lazy('users:privacy'))
Вернуться на верх