Django — данные, вставленные без отражения в таблице администрирования django

#python #django #django-models #django-forms

Вопрос:

Я все еще новичок в django, и мне нужна помощь в этом вопросе. Я создал модель профиля для хранения всех данных, вставленных пользователем в информацию о своем профиле. Я уже тестирую это, используя базовую модель класса, которая состоит только из имени, фамилии и электронной почты, и данные хорошо отражаются в таблице, но когда я создаю другую модель с большим количеством моделей данных, она почему-то не работает. Я не уверен, в чем проблема, любая помощь в этом будет оценена по достоинству. введите описание изображения здесь

models.py

 class Profile(models.Model):
   first_name = models.CharField(max_length=300, null=True)
   last_name = models.CharField(max_length=300, null=True)
   birthday = models.DateField(null=True)
   GENDER_CHOICES = (
               ('gender','Gender'),
               ('male','Male'),
               ('female', 'Female'),
               )
   gender = models.CharField(max_length=10, null=True, choices=GENDER_CHOICES, default='gender')
   email = models.EmailField(max_length=30, null=True)
   phone = models.CharField(max_length=30, null=True)
   address = models.CharField(max_length=300, null=True)
   number = models.CharField(max_length=300, null=True)
   city = models.CharField(max_length=30, null=True)
   zipcode = models.CharField(max_length=10, null=True)
   position = models.CharField(max_length=30, null=True)
   ROLE_CHOICES = (
               ('role','Role'),
               ('admin','Admin'),
               ('user', 'User'),
               )
   role = models.CharField(max_length=10, null=True, choices=ROLE_CHOICES, default='role')

def __str__(self):
    return self.first_name
 

forms.py

 from .models import Profile

class ProfileForm(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ['first_name', 'last_name', 'birthday', 'gender', 'email', 'phone', 'address', 'number', 'city', 'zipcode', 'position', 'role']
 

views.py

 from .forms import ProfileForm
from .models import Profile

def settings(request):
   form = ProfileForm(request.POST or None)
   if form.is_valid():
        form.save()
   return render(request, 'settings.html', {'form': form})
 

settings.html

  <div class="row">
  <div class="col-12 col-xl-8">
      <div class="card card-body shadow-sm mb-4">
          <h2 class="h5 mb-4">General information</h2>
          <form action="" method="POST">
              {% csrf_token %} 
              <div class="row">
                  <div class="col-md-6 mb-3">
                      <div>
                          <label for="first_name">First Name</label>
                          <input class="form-control" id="first_name" type="text" name="first_name" placeholder="Enter your first name" required>
                      </div>
                  </div>
                  <div class="col-md-6 mb-3">
                      <div>
                          <label for="last_name">Last Name</label>
                          <input class="form-control" id="last_name" type="text" name="last_name" placeholder="Also your last name" required>
                      </div>
                  </div>
              </div>
              <div class="row align-items-center">
                  <div class="col-md-6 mb-3">
                      <label for="birthday">Birthday</label>
                      <div class="input-group">
                          <span class="input-group-text"><span class="far fa-calendar-alt"></span></span>
                          <input data-datepicker="" class="form-control" id="birthday" type="text" name="birthday" placeholder="dd/mm/yyyy" required>                                               
                        </div>
                  </div>
                  <div class="col-md-6 mb-3">
                      <label for="gender">Gender</label>
                      <select class="form-select mb-0" id="gender" name="gender" aria-label="Gender select example">
                          <option selected>Gender</option>
                          <option value="1">Female</option>
                          <option value="2">Male</option>
                      </select>
                  </div>
              </div>
              <div class="row">
                  <div class="col-md-6 mb-3">
                      <div class="form-group">
                          <label for="email">Email</label>
                          <input class="form-control" id="email" type="email" name="email" placeholder="name@company.com" required>
                      </div>
                  </div>
                  <div class="col-md-6 mb-3">
                      <div class="form-group">
                          <label for="phone">Phone</label>
                          <input class="form-control" id="phone" type="text" name="phone" placeholder=" 6012-3456789" required>
                      </div>
                  </div>
              </div>
              <h2 class="h5 my-4">Location</h2>
              <div class="row">
                  <div class="col-sm-9 mb-3">
                      <div class="form-group">
                          <label for="address">Address</label>
                          <input class="form-control" id="address" type="text" name="address" placeholder="Enter your home address" required>
                      </div>
                  </div>
                  <div class="col-sm-3 mb-3">
                      <div class="form-group">
                          <label for="number">Number</label>
                          <input class="form-control" id="number" type="text" name="number" placeholder="No." required>
                      </div>
                  </div>
              </div>
              <div class="row">
                  <div class="col-sm-4 mb-3">
                      <div class="form-group">
                          <label for="city">City</label>
                          <input class="form-control" id="city" type="text" name="city" placeholder="City" required>
                      </div>
                  </div>
                  <div class="col-sm-4">
                      <div class="form-group">
                          <label for="zipcode">ZIP</label>
                          <input class="form-control" id="zipcode" type="text" name="zipcode" placeholder="ZIP" required>
                      </div>
                  </div>
              </div>
              <h2 class="h5 my-4">Personal Information</h2>
              <div class="row">
                  <div class="col-md-6 mb-3">
                      <div class="form-group">
                          <label for="position">Position</label>
                          <input class="form-control" id="position" type="text" name="position" placeholder="Enter your position" required>
                      </div>
                  </div>
                  <div class="col-md-6 mb-3">
                    <label for="role">Role</label>
                    <select class="form-select mb-0" id="role" name="role" aria-label="Role select example">
                        <option selected>Role</option>
                        <option value="1">Admin</option>
                        <option value="2">User</option>
                    </select>
                  </div>
              </div>
              <div class="mt-3">
                  <button type="submit" class="btn btn-dark">Save All</button>
              </div>
          </form>
      </div>
  </div>
 

Комментарии:

1. я думаю, что в вашей форме есть ошибка

2. могу я узнать, в какой части? я что-то пропустил?

3. я обновил код ниже, дайте мне знать, если у вас ничего не выйдет по ошибке

4. Как насчет вашей версии Django и версии Python?

Ответ №1:

Вам нужно зарегистрировать эту модель в администраторе, а затем, если вы добавите новый профиль, он будет показан в администраторе

Ответ №2:

вы можете распечатать свою ошибку в использовании терминала ниже кода

 from .forms import ProfileForm
from .models import Profile

def settings(request):
   form = ProfileForm(request.POST or None)    
   if form.is_valid():
        form.save()
   print(form.errors)
   return render(request, 'settings.html', {'form': form})
 

Комментарии:

1. Привет, я уже напечатал ошибку, но я ничего не получил как ошибку.

2. можете ли вы загрузить свой html-файл