Джанго, я хотел бы отправить данные из выпадающего меню в базу данных, когда после нажатия кнопки «Отправить» произойдет ошибка

#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. Не могли бы вы, пожалуйста, переслать мне полный код, это действительно поможет мне