我是django的初学者,并尝试创建像Employee Management System这样的Web应用程序。我正在尝试为每位员工分配一个潜在客户。
我一直在努力寻找这种员工经理关系,以便长期完成我的要求。
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
designation = models.CharField(max_length=20, null=False, blank=False)
empid = models.IntegerField(null=True, blank=True)
manager = models.ForeignKey('self', null=True, blank=True, on_delete=models.CASCADE)
class Project(models.Model):
company = models.CharField(max_length=35)
project = models.CharField(max_length=100)
employee_name = models.ForeignKey(User, null=True, blank=True, on_delete = models.CASCADE)
views.朋友:
@login_required(login_url="/login/")
def employee_details(request, id=None):
context = {}
context['user'] = get_object_or_404(User, id=id)
return render(request, 'employee/details.html', context)
@login_required(login_url="/login/") @admin_only def employee_edit(request, id=None):
user = get_object_or_404(User, id=id)
if request.method == 'POST':
user_form = UserForm(request.POST, instance=user)
if user_form.is_valid():
user_form.save()
return HttpResponseRedirect(reverse('employee_list'))
else:
return render(request, 'employee/edit.html', {"user_form": user_form})
else:
user_form = UserForm(instance=user)
return render(request, 'employee/edit.html', {"user_form": user_form})
edit.html
<form method="POST">
{% csrf_token %}
<table class="table table-bordered table-light">
{{user_form.as_table}}
</table>
<br>
<button type="submit" class="btn btn-warning float-right">Update Profile</button>
</form>
details.html
{% extends 'base.html' %}
{% block content %}
<br>
<table class="table table-light table-bordered table-striped">
<tbody>
<tr>
<th>First Name</th>
<td>{{user.first_name}}</td>
</tr>
<tr>
<th>Last Name</th>
<td>{{user.last_name}}</td>
</tr>
<tr>
<th>Email Id</th>
<td>{{user.email}}</td>
</tr>
<tr>
<th>Employee ID</th>
<td>{{user.profile.empID}}</td>
</tr>
<tr>
<th>Designation</th>
<td>{{user.profile.designation}}</td>
</tr>
<tr>
<th>Reporting to</th>
<td>{{user.profile.Manager}}</td>
</tr>
<!-- <tr>
<th>Designation</th>
<td>{{user.profile.designation}}</td>
</tr> -->
</tbody>
</table>
<div class="text-right">
<a class="btn btn-warning" href="{% url 'employee_edit' user.id %}">Edit</a>
</div>
{% endblock content %}
在添加新员工时,我可以为员工选择经理(也是员工)。但是,在保存员工后,Manager未显示在详细信息页面中。可能是为什么我没有为员工列出经理?这里有什么我想念的吗?
试着改变
{{user.profile.Manager}}
至
{{user.profile.manager.user.last_name}}
manager
包含与self
模型的FK链接,这是Profile
,没有last_name
或类似的东西。 Profile
与User
有关。