python - 如何在 mySQL 中显示来自两个不同表的值?
问题描述
如何在 mySQL 中显示来自两个不同表的值,其中employee
表包含信息job_title_id
,第二个表job_titles
包含job_title_id
主键和相应的职位,如 CEO、员工等...
在我的表格上,我正在提取员工表中显示的所有信息,但是表中的信息job_title_id
是employee
一个数字。我怎样才能从job_titles
表中显示其相应的 job_title ?
<div class="col-md-4 mb-3">
<div class="form-group bmd-form-group is-focused">
<label class="bmd-label-floating" for="jb_title">Job title</label>
<input class="form-control" list="jb_title" name="jb_title" value="{{employee.job_title_id}}">
<datalist id="jb_title">
<option value= "1">
<option value="2">
<option value="3">
<option value="4">
<option value="5">
<option value="6">
<option value="7">
</datalist>
</div>
</div>
</div>
现在的下拉选项。
视图.py
def save_employee_update(request):
print(request.POST)
emp_id = request.POST['employee_id']
fname = request.POST['first_name']
midname = request.POST['middle_name']
lname = request.POST['last_name']
pr_address = request.POST['present_address']
pm_address = request.POST['permanent_address']
zcode = request.POST['zipcode']
bday = request.POST['birthday']
email = request.POST['email_address']
pagibig = request.POST['pagibig_id']
sss = request.POST['sss_id']
tin = request.POST['tin_id']
sg_pr_id = request.POST['solo_parental_id']
# rg_sched = request.POST['reg_schedule']
usid = request.POST['userid']
defpass = request.POST['default_pass']
ustype = request.POST['user_type']
# j_title = request.POST['JobTitle']
employee = Employee.objects.get(employee_id=emp_id)
employee.first_name = fname
employee.middle_name = midname
employee.last_name = lname
employee.present_address = pr_address
employee.permanent_address = pm_address
employee.zipcode = zcode
employee.birthday = bday
employee.email_address = email
employee.pagibig_id = pagibig
employee.sss_id = sss
employee.tin_id = tin
employee.solo_parental_id = sg_pr_id
# employee.reg_schedule = rg_sched
employee.userid = usid
employee.default_pass = defpass
employee.user_type = ustype
# employee.JobTitle = j_title
employee.save()
context = {
"success": 1,
}
print(context)
return render(request, "index.html", context)
来自 mysql 的 表
class Employee(models.Model):
employee_id = models.AutoField(primary_key=True)
company = models.ForeignKey(CompanySettings, models.DO_NOTHING, blank=True, null=True)
pagibig_id = models.CharField(max_length=45, blank=True, null=True)
solo_parental_id = models.CharField(max_length=45, blank=True, null=True)
regular_schedule = models.CharField(max_length=45, blank=True, null=True)
days_off = models.CharField(max_length=45, blank=True, null=True)
years_prior_lead_exp = models.FloatField(blank=True, null=True)
rfid = models.CharField(max_length=255, blank=True, null=True)
fingerprint_path = models.CharField(max_length=255, blank=True, null=True)
fingerprint_device = models.CharField(max_length=255, blank=True, null=True)
fingerprint_data = models.TextField(blank=True, null=True)
nfc_card_tag = models.CharField(max_length=255, blank=True, null=True)
rank_id = models.IntegerField(blank=True, null=True)
job_title = models.ForeignKey('JobTitle', models.DO_NOTHING, blank=True, null=True)
work_policy_template = models.IntegerField(blank=True, null=True)
is_block = models.IntegerField(blank=True, null=True)
schedule_id = models.IntegerField(blank=True, null=True)
first_name = models.CharField(max_length=100, blank=True, null=True)
last_name = models.CharField(max_length=100, blank=True, null=True)
middle_name = models.CharField(max_length=100, blank=True, null=True)
present_address = models.CharField(max_length=500, blank=True, null=True)
permanent_address = models.CharField(max_length=500, blank=True, null=True)
birthday = models.DateField(blank=True, null=True)
zipcode = models.CharField(max_length=10, blank=True, null=True)
userid = models.CharField(max_length=45, blank=True, null=True)
default_pass = models.CharField(max_length=45, blank=True, null=True)
user_type = models.CharField(max_length=45, blank=True, null=True)
email_address = models.CharField(max_length=100, blank=True, null=True)
sss_id = models.CharField(max_length=45, blank=True, null=True)
tin_id = models.CharField(max_length=45, blank=True, null=True)
模型.py
class Meta:
managed = False
db_table = 'employee'
class Update_Employee_Form(ModelForm):
class Meta:
model = Employee
fields = ['employee_id', 'first_name', 'middle_name', 'last_name', 'present_address', 'permanent_address',
'birthday', 'zipcode', 'email_address', 'sss_id', 'pagibig_id', 'tin_id', 'solo_parental_id']
表格.py
解决方案
以下是有关 ModelChoiceField 的一些信息:https ://docs.djangoproject.com/en/2.2/ref/forms/fields/#django.forms.ModelChoiceField
您应该将模型的字段添加到表单中的字段中。您已经将其设置为外键,因此它应该继承这些值。如果它不能从中起作用,请将其强制作为表单类中的模型选择字段:
class Update_Employee_Form(ModelForm):
job_title = forms.ModelChoiceField(
queryset = JobTitle.objects.all(),
label = 'Job Title',
to_field_name = 'job_title' # not necessary but forces the field
widget = forms.Select(),
empty_label = 'Choose Job Title'
)
class Meta:
model = Employee
fields = ['employee_id', 'first_name', 'middle_name', 'last_name', 'present_address', 'permanent_address',
'job_title', 'birthday', 'zipcode', 'email_address', 'sss_id', 'pagibig_id', 'tin_id', 'solo_parental_id']
您还应该明确说明 job_title 外键参数:
job_title = models.ForeignKey('JobTitle', on_delete=models.DO_NOTHING, blank=True, null=True)
推荐阅读
- sql - 多个选择语句sql返回2列:如何将这些相互添加
- javascript - Angular 微前端如何封装全局 CSS?
- c++ - 将 rapidjson::Document 插入需要插入另一个 rapdisjon::Document 的数组中
- nlp - 在 Spacy 中按语言标记方案
- excel - Excel 或其他 Microsoft 工具中的关系图
- excel - Excel:使用 vlookup 返回值后的总多列值
- sql - 如何选择列值直到 ORACLE 中的某些字符
- python - 将excel公式转换成Python代码
- apache - 在 htaccess 方面需要帮助
- performance - 整数的有序与相等比较