我用djiango写了一个网页,配合数据库mysql,实现了从网页输入员工信息并保存在当地的数据库(单表)中,现在我想增加一个表,使得一些员工信息被保存在其中,两张表之间用外键相连接,到查表得时候能把两张表中的数据一起在网站上显现出来,这个方案可行吗?具体怎么操作?
时间: 2024-02-27 20:58:01 浏览: 69
是的,您可以通过使用 Django 的模型(Model)和关系(Relationship)来实现这个方案。
首先,您需要在 Django 的 Models.py 文件中定义两个模型类,分别对应两个表。例如:
```python
from django.db import models
class Employee(models.Model):
name = models.CharField(max_length=50)
age = models.IntegerField()
department = models.CharField(max_length=50)
# 其他员工信息字段
class EmployeeInfo(models.Model):
employee = models.ForeignKey(Employee, on_delete=models.CASCADE)
info_type = models.CharField(max_length=50)
info_value = models.CharField(max_length=100)
# 其他员工信息字段
```
在这个例子中,我们定义了两个模型类:Employee 和 EmployeeInfo。Employee 表示员工信息,包括姓名、年龄、部门等字段。EmployeeInfo 表示员工其他信息表,包括员工信息类型、员工信息值等字段,并且使用 Employee 表的主键作为外键与 Employee 表建立关系。
然后,您需要在 Django 的 Views.py 文件中编写查询代码,以在网站上显示两个表中的数据。例如:
```python
from django.shortcuts import render
from .models import Employee, EmployeeInfo
def employee_list(request):
employees = Employee.objects.all()
for employee in employees:
employee.employeeinfo_set = employee.employeeinfo_set.all()
return render(request, 'employee_list.html', {'employees': employees})
```
在这个例子中,我们编写了一个 employee_list 函数,用于查询所有员工信息并将其传递给 employee_list.html 模板。在查询员工信息时,我们使用 Employee 对象的 employeeinfo_set 属性获取与该员工相关的所有 EmployeeInfo 对象,并将其添加到员工对象中,以便在模板中一起显示。
最后,您需要在 Django 的 Templates 文件夹中编写 HTML 模板,以在网站上显示两个表中的数据。例如:
```html
{% for employee in employees %}
<tr>
<td>{{ employee.name }}</td>
<td>{{ employee.age }}</td>
<td>{{ employee.department }}</td>
{% for info in employee.employeeinfo_set %}
<td>{{ info.info_type }}: {{ info.info_value }}</td>
{% endfor %}
</tr>
{% endfor %}
```
在这个例子中,我们使用了 Django 的模板语言,以循环的方式显示所有员工信息,并使用嵌套的循环显示与每个员工相关的所有 EmployeeInfo 对象。
希望这个例子能够帮助您实现您的方案。
阅读全文