如何将值从数据库导入到 OptionMenu Django Python
How to import values from database into a OptionMenu Django Python
我这里有一个模型页面。
from django.db import models
class Trainee(models.Model):
TraineeID = models.AutoField(primary_key=True)
Name = models.CharField(max_length=50)
Course = models.CharField(max_length=20)
BatchNo = models.CharField(max_length=15)
DateofBirth = models.CharField(max_length=30)
ContactNo = models.CharField(max_length=20)
ContactAddress = models.CharField(max_length=80)
EmailAddress = models.EmailField()
class Meta():
db_table = "Trainee"
class Course(models.Model):
CourseID = models.AutoField(primary_key=True)
CourseName = models.CharField(max_length=20)
CourseDuration = models.CharField(max_length=30)
CourseCost = models.CharField(max_length=50)
class Meta():
db_table = "Courses"
我制作了一个 html 页面,我可以在其中输入数据并保存 Trainee
。我想让 Course
成为一个 OptionMenu 而不是一个 charfield,它将仅从 Courses
table 中保存的数据中获得选项 <select>
。因此,如果 Courses
table 中有保存的数据,如 -Java、Python、C 等,那么选项菜单 Course
将只有这些。如果删除它们或添加新的,则选项菜单将相应更改。这是我的 html 页面,我可以在其中输入数据并保存:
{% extends "MyTestApp/base.html" %}
{% block body_block %}
{% load static %}
<link rel="stylesheet" href="{% static '/css/bootstrap.min.css'%}" />
<form method="post" action="/trainee/">
{%csrf_token%}
<div class="container">
<br/>
<div class="form-group row">
<label class="col-sm-1 col-form-label"></label>
<div class="col-sm-4">
<h3> Enter Trainee Information </h3>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label"> Name: </label>
<div class="col-sm-4">
{{form.Name}}
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="Course"> Course: </label>
<div class="col-sm-4">
<select name="Course" id="Course">
<option value="{{courses.CourseName}}">{{courses.CourseName}}</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label"> BatchNo: </label>
<div class="col-sm-4">
{{form.BatchNo}}
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="DateofBirth"> Date Of Birth: </label>
<div class="col-sm-4">
<input type="date" name="DateofBirth" id="DateofBirth">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label"> ContactNo: </label>
<div class="col-sm-4">
{{form.ContactNo}}
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label"> ContactAddress: </label>
<div class="col-sm-4">
{{form.ContactAddress}}
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label"> EmailAddress: </label>
<div class="col-sm-4">
{{form.EmailAddress}}
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label"></label>
<div class="col-sm-4">
<button type="submit" class="btn btn-primary"> Submit </button>
</div>
</div>
</div>
</form>
{% endblock %}
我希望我已经说清楚了。任何帮助将不胜感激。在过去的一个月里,我一直被困在这个问题上。
如果我正确理解这里的问题,您正在寻找:
class Trainee(models.Model):
...
course = models.ForeignKey('Course', on_delete=models.SET_NULL)
...
在此处阅读更多相关信息:Django's ForeignKey。
顺便提一句。如果你想遵循推荐的 PEP8 规则,相信我你想要,模型字段和变量应该是 snake_case(小写)。
您在 views.py 中的表单视图可能需要在其上下文中包含 courses = Course.objects.all()
,具体取决于您在其中包含的内容。
views.py:
SomeView(AnyView):
...
extra_context = {'courses': Course.objects.all()}
...
然后html表单模板:
...
<select name="course" id="id_course">
{% for course in courses %}
<option value="{{ course.id }}">{{ course.course_name }}</option>
{% endfor %}
</select>
...
通常传递 object.id
的值比 object.name
更好。名称应该为人类命名,ID 应该为我们的算法命名。
我这里有一个模型页面。
from django.db import models
class Trainee(models.Model):
TraineeID = models.AutoField(primary_key=True)
Name = models.CharField(max_length=50)
Course = models.CharField(max_length=20)
BatchNo = models.CharField(max_length=15)
DateofBirth = models.CharField(max_length=30)
ContactNo = models.CharField(max_length=20)
ContactAddress = models.CharField(max_length=80)
EmailAddress = models.EmailField()
class Meta():
db_table = "Trainee"
class Course(models.Model):
CourseID = models.AutoField(primary_key=True)
CourseName = models.CharField(max_length=20)
CourseDuration = models.CharField(max_length=30)
CourseCost = models.CharField(max_length=50)
class Meta():
db_table = "Courses"
我制作了一个 html 页面,我可以在其中输入数据并保存 Trainee
。我想让 Course
成为一个 OptionMenu 而不是一个 charfield,它将仅从 Courses
table 中保存的数据中获得选项 <select>
。因此,如果 Courses
table 中有保存的数据,如 -Java、Python、C 等,那么选项菜单 Course
将只有这些。如果删除它们或添加新的,则选项菜单将相应更改。这是我的 html 页面,我可以在其中输入数据并保存:
{% extends "MyTestApp/base.html" %}
{% block body_block %}
{% load static %}
<link rel="stylesheet" href="{% static '/css/bootstrap.min.css'%}" />
<form method="post" action="/trainee/">
{%csrf_token%}
<div class="container">
<br/>
<div class="form-group row">
<label class="col-sm-1 col-form-label"></label>
<div class="col-sm-4">
<h3> Enter Trainee Information </h3>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label"> Name: </label>
<div class="col-sm-4">
{{form.Name}}
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="Course"> Course: </label>
<div class="col-sm-4">
<select name="Course" id="Course">
<option value="{{courses.CourseName}}">{{courses.CourseName}}</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label"> BatchNo: </label>
<div class="col-sm-4">
{{form.BatchNo}}
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="DateofBirth"> Date Of Birth: </label>
<div class="col-sm-4">
<input type="date" name="DateofBirth" id="DateofBirth">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label"> ContactNo: </label>
<div class="col-sm-4">
{{form.ContactNo}}
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label"> ContactAddress: </label>
<div class="col-sm-4">
{{form.ContactAddress}}
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label"> EmailAddress: </label>
<div class="col-sm-4">
{{form.EmailAddress}}
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label"></label>
<div class="col-sm-4">
<button type="submit" class="btn btn-primary"> Submit </button>
</div>
</div>
</div>
</form>
{% endblock %}
我希望我已经说清楚了。任何帮助将不胜感激。在过去的一个月里,我一直被困在这个问题上。
如果我正确理解这里的问题,您正在寻找:
class Trainee(models.Model):
...
course = models.ForeignKey('Course', on_delete=models.SET_NULL)
...
在此处阅读更多相关信息:Django's ForeignKey。 顺便提一句。如果你想遵循推荐的 PEP8 规则,相信我你想要,模型字段和变量应该是 snake_case(小写)。
您在 views.py 中的表单视图可能需要在其上下文中包含 courses = Course.objects.all()
,具体取决于您在其中包含的内容。
views.py:
SomeView(AnyView):
...
extra_context = {'courses': Course.objects.all()}
...
然后html表单模板:
...
<select name="course" id="id_course">
{% for course in courses %}
<option value="{{ course.id }}">{{ course.course_name }}</option>
{% endfor %}
</select>
...
通常传递 object.id
的值比 object.name
更好。名称应该为人类命名,ID 应该为我们的算法命名。