Как использовать одну модель «сотрудник» для хранения сотрудников и менеджеров в django? - PullRequest
0 голосов
/ 12 апреля 2020

Я создаю систему типов ERP, где у меня есть модель django (таблица) под названием «сотрудник».

Я хочу, чтобы каждый работник компании был «сотрудником». (например, кодер, начальник, уборщик, линейный менеджер и т. д. c. все будут «сотрудниками»)

Я также хочу, чтобы у некоторых сотрудников был один или несколько линейных руководителей. А у линейного менеджера может быть несколько сотрудников.

Итак, вопрос в том, как сделать линейного менеджера частью таблицы «работник» и иметь поле, которое описывает «сотрудников» под линейным менеджером? Так что я могу показать, какой линейный менеджер / ы есть у сотрудника. Также покажите, у какого линейного менеджера какие сотрудники под ним?

Вот файл модели:

class Team(models.Model):
    name = models.CharField(max_length=64)
    t_id = models.CharField(max_length=64)
    def __str__(self):
        return self.name


class Employee(models.Model):
    
    
    first_name=models.CharField(max_length=64)
    
    last_name=models.CharField(max_length=64)
    
    e_id=models.CharField(max_length=64)

    current_role=models.CharField(max_length=64) # "coder"
    
    past_roles=models.CharField(max_length=512) # "coder, developer, janator" (seperator: ,)

    teams = models.ManyToManyField(Team, related_name="employees", blank=True)

    joining_date = models.DateTimeField(null=True,blank=True)

    desk_location=models.CharField(max_length=64)

    #How do I go about this?
    line_manager = ???


    def __str__(self):
        return self.first_name

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

Спасибо

1 Ответ

0 голосов
/ 12 апреля 2020

Как я понимаю, вы хотите иметь какие-то отношения вокруг этих двух моделей. Вы хотите, чтобы у сотрудника был один или несколько линейных менеджеров, а у менеджера - один или несколько сотрудников. Я бы порекомендовал вам поискать и найти на YouTube учебники об отношениях «многие ко многим» и поле, которое Django предоставляет для этого типа отношений models.ManyToManyField().

Вот ссылка на Django документация по отношениям "многие ко многим" между моделями: https://docs.djangoproject.com/en/3.0/topics/db/examples/many_to_many/.

Однако для реализации такого рода функциональности вам потребуется другая модель для LineManager. сами.

Надеюсь, это поможет. Удачи с вашим проектом!

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