【问题标题】:How can I capture first_name from a form?如何从表单中捕获 first_name?
【发布时间】:2021-04-21 11:07:06
【问题描述】:

我如何才能将 first_name 放入上下文中。

class NewTeacherView(LoginRequiredMixin,CreateView):
    model = TeacherData
    form_class = TeachersForm
    template_name = 'new_teacher.html'
    #template_name = 'new_teacher.html'
    success_url = reverse_lazy('teachers')

    def get_context_data(self, *args, **kwargs):
        context = super(NewTeacherView,self).get_context_data(*args, **kwargs)
        context["user"] = User.objects.create_user(
            username=???????
            password=???????)
        return context

表格如下

class TeachersForm(forms.ModelForm):
    class Meta:
        model = TeacherData
        fields = ("first_name","last_name")
        
        widgets = {
            "first_name":forms.TextInput(attrs={"class":'form-control'}),
            "last_name":forms.TextInput(attrs={"class":'form-control'}),
        }

我的兴趣和愿望是将first_name 用于usernamepassword

【问题讨论】:

    标签: python-3.x django django-views


    【解决方案1】:

    不要尝试覆盖get_context_data,而应该覆盖form_valid,如果表单有效并保存对象,则会调用它:

    class NewTeacherView(LoginRequiredMixin,CreateView):
        model = TeacherData
        form_class = TeachersForm
        template_name = 'new_teacher.html'
        #template_name = 'new_teacher.html'
        success_url = reverse_lazy('teachers')
        
        def form_valid(self, form):
            response = super().form_valid(form)
            teacher_data = self.object
            first_name = teacher_data.first_name
            # Best normalize this using:
            # first_name = User.normalize_username(first_name)
            # Also first names are not guaranteed to be unique, you should write some code for that case
            user = User.objects.create_user(username=first_name, password=first_name)
            return response
    

    【讨论】:

      猜你喜欢
      • 2019-12-02
      • 2021-10-02
      • 1970-01-01
      • 2016-03-18
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      相关资源
      最近更新 更多