Форма регистрации всегда выдает ошибку "это поле обязательно для заполнения" - PullRequest
0 голосов
/ 22 января 2020

Я хочу создать регистрационную форму, которая содержит форму пользователя и форму профиля пользователя

пользователь моей таблицы из Django auth_user, поэтому он будет содержать основной столбец, такой как идентификатор, пользователь, адрес электронной почты, пароль, запущен date, et c

и у меня есть форма профиля пользователя, которая создается из форм .py и модели из model.py здесь, она имеет FK user_id, который подключен к идентификатору в auth_user

проблема в том, что когда я вставляю данные, всегда говорится, что это поле обязательно, хотя я уже вставляю все столбцы

, вот код

forms.py

class UserForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput(attrs={'class': 'form-control'}))
    username = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    email = forms.CharField(widget=forms.EmailInput(attrs={'class': 'form-control'}))

    class Meta():
        model = User
        fields = ('username', 'email', 'password')


class UserProfileInfoForm(forms.ModelForm):
    ROLE_1 = 'Business Analyst'
    ROLE_2 = 'Manager'
    ROLE_3 = 'Segment Manager'
    ROLE_4 = 'Admin'
    ROLE_CHOICES = (
        (ROLE_1, u"Business Analyst"),
        (ROLE_2, u"Manager"),
        (ROLE_3, u"Segment Manager"),
        (ROLE_4, u"Admin")
    )
    role = forms.ChoiceField(choices=ROLE_CHOICES, widget=forms.Select(attrs={'class': 'form-control'}))
    description = forms.CharField(widget=forms.Textarea(attrs={'class': 'form-control'}))
    address = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    phone = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    cell = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))

    def __init__(self, disable_fields=True, *args, **kwargs):
        super().__init__(*args, **kwargs)
        if disable_fields:
            self.fields['role'].disabled = True

models.py

class UserProfileInfo(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
    role = models.CharField(max_length=250, blank=True)
    description = models.TextField(max_length=250, blank=True)
    address = models.CharField(max_length=250, blank=True)
    phone = models.CharField(max_length=250, blank=True)
    cell = models.CharField(max_length=250, blank=True)
    profile_pic = models.ImageField(upload_to='profile_pics', blank=True)

    def __str__(self):
        return self.user.username

def register(request):
    registered = False
    if request.method == 'POST':
        print("test")
        user_form = UserForm(request.POST)
        profile_form = UserProfileInfoForm(request.POST)
        if user_form.is_valid() and profile_form.is_valid():
            user = user_form.save()
            user.set_password(user.password)
            user.save()
            profile = profile_form.save(commit=false)
            profile.user = user
            if 'profile_pic' in request.FILES:
                profile.profile_pic = request.FILES['profile_pic']
            profile.save()
            registered = True
        else:
            print(user_form.errors, profile_form.errors)
    else:
        user_form = UserForm()
        profile_form = UserProfileInfoForm(disable_fields=False)
    return render(request, 'register.html',
                  {'user_form': user_form,
                   'profile_form': profile_form,
                   'registered': registered})

html

<section id="main-content">
      <section class="wrapper">
        <h3><i class="fa fa-angle-right"></i>Register User</h3>
        <!-- row -->
        <!-- FORM VALIDATION -->
        <div class="row mt">
          <div class="col-lg-12">
            <div class="form-panel">
              <div class=" form">
                 {% load staticfiles %}
                          {% block body_block %}

                                {% if registered %}
                                  <h1>Thank you for registering!</h1>
                                {% else %}





                    <form class=" form-horizontal style-form" id="commentForm" enctype="multipart/form-data" method="POST" action="">

                                    {% csrf_token %}

                                    {{ user_form.as_p}}

                                    {{ profile_form.as_p }}



                    <button class="btn btn-theme" type="submit" style="height:50px;width:200px;" value="Register">Register</button> 


                     </form>

                 {% endif %}
                              </div>
                            </div>
                          {% endblock %}
              </div>
            </div>
            <!-- /form-panel -->
          </div>
          <!-- /col-lg-12 -->
        </div>
        <!-- /row -->
      </section>
    </section>

Может кто-нибудь мне помочь? я уже пытаюсь каким-то образом, например удалить profile_form.isvalid () в условии if, и он переходит к следующему шагу, но это ошибка ORA-01400: cannot insert NULL into ("ICB"."POLLS_USERPROFILEINFO"."USER_ID"), user_id которой сначала является fk

. Я делаю этот модуль и он работает нормально, но через 1 месяц это ошибки, и я не изменил код

1 Ответ

0 голосов
/ 22 января 2020

Попробуйте отредактировать этот раздел в вашем html:

action="your_url_here"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...