Как назначить руководителя / менеджера сотруднику в Django? - PullRequest
0 голосов
/ 01 апреля 2019

Я новичок в django и пытаюсь создать веб-приложение, подобное Системе управления сотрудниками.Я пытаюсь назначить лидерство каждому сотруднику.

Я пытался найти это отношение Сотрудник-менеджер, чтобы выполнить мое требование в течение длительного времени.

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.py:

@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 %}

Я могу выбрать менеджера (который также является сотрудником) для сотрудникапри добавлении нового сотрудника.Однако после сохранения сотрудника менеджер не отображается на странице сведений.В чем может быть причина, почему я не включаю менеджера в список сотрудников?Есть ли что-то, что я здесь скучаю?

1 Ответ

0 голосов
/ 01 апреля 2019

Попробуйте изменить

{{user.profile.Manager}}

на

{{user.profile.manager.user.last_name}}

manager содержит ссылку FK на self модель, которая Profile, которая не имеет last_name или что-то ещекак это.Profile связан с User.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...