#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-файл