#python #django #django-models #django-forms #django-crispy-forms
#питон #джанго #django-модели #django-формы #django-crispy-forms
Вопрос:
У меня есть форма в моем шаблоне, для реализации которой я использовал django-crispy-forms. У меня есть models.py , а затем создал forms.py а затем использовал его в своей views.py . Я не знаю, почему у меня все время появляется надпись «Это поле обязательно». всякий раз, когда я загружаю страницу. У меня есть некоторые предчувствия, что это как-то связано с views.py ты. Я был бы рад, если бы смог получить какие-то решения. Спасибо
models.py
class add_courses(models.Model):
Course_Name = models.CharField(max_length=200)
Manager_Name = models.ForeignKey(Manager_login_information, on_delete=models.CASCADE)
choices = (
("online", "online"),
("in person", "in person")
)
description = models.TextField(default='')
syllabus = models.TextField(default='')
classroom = models.CharField(choices=choices, default='in person', max_length=12)
location = models.CharField(max_length=40, default='')
course_code = models.CharField(max_length=14, default='')
student = models.ManyToManyField(add_students_by_manager)
teacher = models.ManyToManyField(add_teacher_by_manager)
schedule = models.ForeignKey(course_schedule, on_delete=models.CASCADE)
def __str__(self):
return self.Course_Name
views.py
def manager_page(request):
if request.method=="POST":
manager_id = request.POST.get('manager_id')
manager_name = request.POST.get('manager_name')
form3 = AddCourses()
if request.method == "POST":
form3 = AddCourses(request.POST)
if form3.is_valid():
form3.save()
return redirect("/")
# get_course_details = add_course.objects.all()
courses = add_courses.objects.all().order_by('-id')
get_supervisor_man=manager_supervisor.objects.filter(manager_id=manager_id)
Manager_login_information_get1 = Manager_login_information.objects.get(manager_ID=manager_id)
# print(Manager_login_information_get1)
manager_usid = Manager_login_information_get1.manager_ID
manager_usname = Manager_login_information_get1.manager_Name
context9 = {'manager_id':manager_id, 'manager_name':manager_name, 'form1':form1, 'form2':form2, 'form3':form3, 'courses':courses, 'Manager_login_information_get1':Manager_login_information_get1}
return render(request, 'manager_page.html', context9)
else:
return redirect('/')
Комментарии:
1. Можете ли вы также опубликовать свою модель здесь? решением может быть добавление «blank = True» в вашу модель: docs.djangoproject.com/en/3.1/ref/models/fields/#blank
2. Проверьте вопрос еще раз, я его добавил.
Ответ №1:
В вашей модели вы должны добавить blank=True, чтобы разрешить пустые поля. (по умолчанию равно False)
Таким образом, ваша модель будет выглядеть примерно так:
class add_courses(models.Model):
Course_Name = models.CharField(max_length=200, blank=True)
...
...
Комментарии:
1. Спасибо. это сработало для всех полей, кроме поля student и teacher, которые имеют множество связей manytomanyfield.
2. Нет проблем! вы снова запустили миграцию? я думал, что это тоже сработает с полями m2m.
3. кроме того, как я могу предварительно заполнить поле manager текущей информацией о менеджере, поле manager является внешним ключом.
4. Чтобы получить текущую информацию о менеджере / пользователе, вы должны создать набор запросов внутри вашего представления. примените это к ‘context9’, чтобы получить к нему доступ из шаблона, где вы можете перебирать его в цикле.
5. Это приводит к тому, что пользователь может заполнить поле как пустое, не проверяя входные данные по мере необходимости.