首页 > 解决方案 > Django,当点击提交按钮但发生错误时,我想将数据从下拉菜单发送到数据库

问题描述

我试图从 index.html 的下拉菜单中将数据发送到数据库,这就是为什么我创建了 models.py 作为名为 Program 的初始类,后来使用 ForeignKey 将其用于 Contact 类。在 admin.py 注册联系人,后来我在 index.html 中使用了类名程序,它呈现了我在 django 管理面板中输入的程序名称。但问题是 {{program2}} 确实显示在索引页面上,但是当用户进入表单并选择并提交此 program2 数据时不会进入数据库。我如何使用下拉列表将值发送到数据库。帮助表示赞赏,接受以我的方式解决它。

模型.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

视图.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')

索引.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>

标签: python-3.xdjangodjango-modelsdjango-viewsdjango-forms

解决方案


首先,您需要将 program2 添加到 contect dict 以使其在您的 html 中可用

return render(request, 'index.html', {'program2': program2})

对于提交问题,您需要在 index.html 中发布完整的表单


推荐阅读