#python-3.x #django #django-models #django-views #django-forms
Вопрос:
Я пытаюсь отправить данные в базу данных из выпадающего меню из index.html вот почему я создал models.py в качестве начального класса, названного Программой, а затем использовавшего его для связи с классом с помощью внешнего ключа. зарегистрированный контакт по адресу admin.py и позже я использовал программы с именами классов, чтобы в index.html и это отображение названия программ, которое я ввел в админ-панели django. но проблема в том, что {{program2}} отображается на странице индекса, но когда пользователь переходит в форму, выбирает и отправляет эти данные program2, они не попадают в базу данных. Как я мог бы использовать раскрывающийся список для отправки значения в базу данных. Помощь оценена по достоинству, принимая решение решить ее с моей стороны.
models.py
class Program(models.Model):
program1 = models.CharField(max_length=50, default='')
class Contact(models.Model):
name = models.CharField(max_length=50, primary_key=True)
contact = models.CharField(max_length=50, default='')
address = models.TextField(max_length=1000, default='')
program2 = models.ForeignKey(Program, on_delete=models.CASCADE, null=True, blank=True)
# program = models.CharField(max_length=50, default='')
# bba = models.CharField(max_length=50, default="")
# bhm = models.CharField(max_length=50, default="")
email = models.CharField(max_length=50, default="")
w3review = models.TextField(max_length=1000, default="")
def __str__(self):
return self.name
views.py
def index(request):
if request.method == 'POST':
name = request.POST.get('name', '')
contact = request.POST.get('contact', '')
address = request.POST.get('address', '')
program2 = request.POST.get('mba', '')
# bba = request.POST.get('bba', '')
# bhm = request.POST.get('bhm', '')
email = request.POST.get('email', '')
w3review = request.POST.get('w3review', '')
if name and contact and address and email and w3review and program2:
contact = Contact(name=name, contact=contact, address=address, email=email, w3review=w3review, program2=program2)
contact.save()
else:
return HttpResponse("Enter all details")
return render(request, 'index.html')
index.html
<label for="cars">Choose Program:</label>
<select name="cars" id="cars">
<option id="mba" name="mba">{{program2}}</option>
<option id="bba" name="bba">BBA</option>
<option id="bhm" name="bhm">BHM</option>
</select>
Ответ №1:
Сначала вам нужно добавить program2 в contect dict, чтобы он был доступен в вашем html, например
return render(request, 'index.html', {'program2': program2})
Для решения проблемы отправки вам необходимо разместить полную форму в своем index.html
Комментарии:
1. UnboundLocalError в / локальной переменной ‘program2’, на которую ссылались перед назначением-ошибка получения
2. Вы устанавливаете program2 только в том случае, если это запрос POST … возможно, вы отправите запрос на получение.
3. Не могли бы вы, пожалуйста, переслать мне полный код, это действительно поможет мне