在我的项目中,我的操作很复杂,因此当我选择部门时,我保存该项目的ID,并绑定到表以显示插入的记录,因此当我绑定部门时,我想绑定该部门的名称而不是该ID。请帮助我。
模型
class Department(models.Model):
ACTIVE = 1
INACTIVE = 2
DELETED = 3
STATUS_CHOICES = (
(ACTIVE, 'active'),
(INACTIVE, 'inactive'),
(DELETED, 'deleted'),
)
department_id = models.AutoField(primary_key=True)
department_name = models.CharField(max_length=30, null=False)
created_on = models.DateTimeField(auto_now_add=True, null=False)
created_by = models.CharField(max_length=100, null=False)
modified_on = models.DateTimeField(auto_now_add=True)
modified_by = models.CharField(max_length=100)
status = models.CharField(max_length=10, null=False, choices=STATUS_CHOICES)
objects = UserManager()
class Meta:
managed = True
db_table = "ht_department"
def __str__(self):
return self.department_id
表格
class EmpForm(ModelForm):
class Meta:
model = Employee
fields = ["employee_id", "Name", "designation", "department_id", "manager_id",
"date_of_joining","date_of_birth", "location_id", "email", "contact_number",
"password", "created_by", "modified_by", "status", "user_type"]
class dept(ModelForm):
class Meta:
model = Department
fields = ["department_id", "department_name", "created_by", "modified_by", "status"]
class EmpLoc(ModelForm):
class Meta:
model = Location
fields = ["location_id", "location_name", "created_by", "modified_by", "status"]
html
<tbody id="myTable">
{% for employee in employees %}
<tr>
<td>{{ employee.employee_id}}</td>
<td>{{ employee.Name}}</td>
<td>{{ employee.designation}}</td>
<td>{{ employee.department_id}}</td>
<td>{{ employee.manager_id}}</td>
<td>{{ employee.location_id}}</td>
<td>
<a href="#editEmployeeModal" class="edit" data-toggle="modal"><i class="material-icons" data-toggle="tooltip" title="Edit"></i></a>
<a href="#deleteEmployeeModal" class="delete" data-toggle="modal"><i class="material-icons" data-toggle="tooltip" title="Delete"></i></a>
</td>
</tr>
{% endfor %}
</tbody>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Django中,当你想要在模板中显示与外键关联的模型的某个字段(如部门名称而不是部门ID)时,你需要使用__
来执行跨表查询。对于你的场景,你可以在模板中修改如下:
{% for employee in employees %}
{{ employee.employee_id }}
{{ employee.Name }}
{{ employee.designation }}
<!-- 修改这里,用department.department_name来获取部门名称 -->
{{ employee.department.department_name }}
{{ employee.manager_id }}
{{ employee.location_id }}
<a href="{% url 'edit_employee' employee.pk %}">Edit</a>
<a href="{% url 'delete_employee' employee.pk %}">Delete</a>
{% endfor %}
确保你的Employee
模型中department_id
字段是一个ForeignKey指向Department
模型,这样Django才能自动解析并提供.department
这样的属性来访问关联的部门对象。
如果你的Employee
模型定义如下,这应该已经是正确的了:
class Employee(models.Model):
# 其他字段...
department = models.ForeignKey(Department, on_delete=models.CASCADE)
# ...
如果department_id
直接是一个整数字段而非ForeignKey,你需要调整模型定义以使用ForeignKey,以便能够直接通过.department.department_name
来访问部门名称。同时,请确保在进行此更改后迁移数据库。
此外,注意在实际应用中,通常不会直接在模板中硬编码URL和视图名称,而是使用Django的url模板标签来生成URL,如上面示例中的{% url 'edit_employee' employee.pk %}
和{% url 'delete_employee' employee.pk %}
。请确保在你的urls.py中定义了相应的URL模式名称。