Django表单使用与moels字段名称不同的html元素

Django表单使用与moels字段名称不同的html元素,django,python-3.x,django-forms,Django,Python 3.x,Django Forms,在我的django项目中,我有以下模型: class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE,) u_fullname = models.CharField(max_length=200) u_email = models.EmailField() u_profile = models.CharField(max_length=1)

在我的django项目中,我有以下模型:

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,)
    u_fullname = models.CharField(max_length=200)
    u_email = models.EmailField()
    u_profile = models.CharField(max_length=1)
    u_job = models.CharField(max_length=100, null=True, blank=True, default='D')
    u_country = models.CharField(max_length=20, null=True, blank=True, default='Italy')
    u_regdata = models.DateTimeField(auto_now=True)
    stripe_id = models.CharField(max_length=100, null=True, blank=True)
    activation_code = models.CharField(max_length=10)
    u_picture = models.ImageField(upload_to='profile_images', blank=True)
    u_active = models.BooleanField(default=False)
    u_terms = models.BooleanField(default=False)

    def __unicode__(self):
        return self.u_profile
还有像这样的forms.py:

from a_profile.models import UserProfile
类ProfileModelForm(ModelForm):

现在在html中,我必须为与表单字段相关的元素使用不同的名称:

<form action="" method="POST">
    {% csrf_token %}

    {{ form.errors }}
    <div class="row">
        <div class="col-lg-12 no-pdd">
            <div class="sn-field">
                <input type="text" name="u_fullname_C" id="u_fullname_c"
                                                       placeholder="Company Name">
                                                <i class="la la-building"></i>
                                            </div>
                                        </div>
                                        <div class="col-lg-12 no-pdd">
                                            <div class="sn-field">
                                                <select name="u_country_c" id="u_country_c"
                                                        value="{{ form.u_country }}">
                                                    <option selected="selected">Italy</option>
                                                    <option>Spain</option>
                                                    <option>USA</option>
                                                    <option>France</option>
                                                </select>
                                                <i class="la la-globe"></i>
                                                <span><i class="fa fa-ellipsis-h"></i></span>
                                            </div>
                                        </div>
                                        <div class="col-lg-12 no-pdd">
                                            <div class="sn-field">
                                                <select name="u_job_c" id="u_job_c" value="{{ form.u_job }}">
                                                    <option selected="selected">Technology</option>
                                                    <option>Healthcare</option>
                                                    <option>Building</option>
                                                    <option>Aerospace</option>
                                                </select>
                                                <i class="la la-industry"></i>
                                                <span><i class="fa fa-ellipsis-h"></i></span>
                                            </div>
                                        </div>
                                        <div class="col-lg-12 no-pdd">
                                            <div class="sn-field">
                                                <input type="text" name="u_email_c" id="u_email_c"
                                                       placeholder="Enter a valid email"
                                                       value="{{ form.u_email }}">
                                                <i class="la la-envelope"></i>
                                            </div>
                                        </div>
                                        <div class="col-lg-12 no-pdd">
                                            <div class="sn-field">
                                                <input type="password" name="u_password_c" id="u_password_c"
                                                       placeholder="Password">
                                                <i class="la la-lock"></i>
                                            </div>
                                        </div>
                                        <div class="col-lg-12 no-pdd">
                                            <div class="sn-field">
                                                <input type="password" name="repeat-password_c"
                                                       id="repeat-password_c"
                                                       placeholder="Repeat Password"
                                                       onfocusout="return checkPass('C')">
                                                <i class="la la-lock"></i>
                                            </div>
                                        </div>
                                        <div class="col-lg-12 no-pdd">
                                            <div class="checky-sec st2">
                                                <div class="fgt-sec">
                                                    <input type="checkbox" name="u_terms_c" id="u_terms_c">
                                                    <label for="u_terms_c"><span></span></label>
                                                    <span></span>
                                                    </label>
                                                    <small>Yes, I understand and agree to the workwise Terms &
                                                        Conditions.</small>
                                                </div><!--fgt-sec end-->
                                            </div>
                                        </div>
                                        <div class="col-lg-12 no-pdd">
                                            <button type="submit" name="company" value="submit"
                                                    onclick="return checkUserRegForm('C')">Get Started
                                            </button>
                                        </div>
                                    </div>
                                </form>

{%csrf_令牌%}
{{form.errors}}
意大利
西班牙
美国
法国
技术
保健
建筑
航空航天
是的,我理解并同意workwise条款&
条件
开始
此时,当我运行代码并将数据输入表单时,当我提交时,会出现表单错误,因为表单在我的字段中看不到值:

错误->{'u_全名':[ValidationError(['此字段为必填项]],'u_电子邮件':[ValidationError(['此字段为必填项]]),“全部”:[ValidationError(['请阅读并接受我们的服务条款]]

如何将表单字段名称链接到html元素名称值


非常感谢,这里有一个关于这个主题的文档链接

我找了一会儿,这就是我想到的。对不起,我漏掉了一些东西。在您看来,如果您能够获得“国家代码”选项和“工作”选项,您可以在它们的模板中查看它们

我添加了value=“{{form.u\u fullname}}”,和value=“{{form.u\u terms}}”

<form method="" action="">
    {% csrf_token %}

    {{ form.errors }}
    <div class="row">
        <div class="col-lg-12 no-pdd">
            <div class="sn-field">
                <input type='text' name="u_fullname_C" id="u_fullname_c" 
                    value="{{ form.u_fullname }}" placeholder="">
            </div>
        </div>

        <div class="col-lg-12 no-pdd">
            <div class="sn-field">
                <select name="u_country_c" id="">
                    {% for option in options %}
                        <option value="{{ option.pk }}">{{ option.name }}</option>
                    {% endfor %}
                </select>
            </div>
        </div>

        <div class="col-lg-12 no-pdd">
            <div class="sn-field">
                <select name="u_job_c" id="u_job_c" value="{{ form.u_job }}">
                    {% for job in jobs %}
                        <option value="{{ job.pk }}">{{ job.name }}</option>
                    {% endfor %}
            </div>
        </div>

        <div class="col-lg-12 no-pdd">
            <div class="sn-field">
                <input type='text' name='u_email_c' id='u_email_c' placeholder="" value="{{ form.u_email }}">
                <i class="la la-envelope"></i>
            </div>
        </div>

        <div class="col-lg-12 no-pdd">
            <div class="sn-field">
                <input type="password" name="u_password_c" id="u_password_c" placeholder="Password">
                <i class=""></i>
            </div>
        </div>

        <div class="col-lg-12 no-pdd">
            <div class="sn-field">
                <input type="password" name="repeat-password_c" id="repeat-password_c" placeholder="" onfocusout="return checkPass('C')">
            </div>
        </div>

        <div class="col-lg-12 no-pdd">
            <div class="checky-sec st2">
                <div class="fgt-sec">
                    <input type="checkbox" value="{{ form.u_terms }}" name="u_terms_c" id="u_terms_c">
                    <label for="u_terms_c"><span></span>
                        <span></span>
                    </label>
                    <small>Yes, I understand and agree to the workwise Terms &
                                                        Conditions.
                    </small>
                </div>
            </div>
        </div>

        <div class="col-lg-12 no-pdd">
            <button type='submit' name='company' value='submit' onclick="return checkUserRegForm('C')">
                Get Started
            </button>
        </div>  
    </div>
</form>

或函数视图:

def user_profile_view(request):
    if request.method == 'POST':
        form = ProfileModelForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            fullname = cd['u_fullname']
            UserProfile.objects.create(user=request.user, u_fullname=fullname)

            return redirect('')
    else:
        form = ProfileModelForm()
能否提供views.py文件?我还是Django的新手,所以如果你还有麻烦,请告诉我

class ProfileView(CreateView):
    form_class = UserProfileForm
    success_url = '/'

    def form_valid(self, form):
        user_profile = form.save(commit=False)
        user_profile.updated = datetime.datetime.now()
        user_profile.save()
        return super().form_valid(form)
def user_profile_view(request):
    if request.method == 'POST':
        form = ProfileModelForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            fullname = cd['u_fullname']
            UserProfile.objects.create(user=request.user, u_fullname=fullname)

            return redirect('')
    else:
        form = ProfileModelForm()