У меня есть и Employee
модель и EmployeeType
модель, с Employee
, имеющим атрибут с именем Employee.employee_type
, который имеет тип EmployeeType
.
В настоящее время при создании клиента,мы запускаем что-то, чтобы создать значения по умолчанию для EmployeeType
.Прямо сейчас, эта логика находится в методе в модуле, который обрабатывает новый клиент, который создается ... но я думал, что лучшее место для этого было бы с моделью EmployeeType
.
У меня такой вопрос - было бы целесообразно создать собственный атрибут Manager
для EmployeeType
, который создает и / или выбирает эти типы по умолчанию?См. Следующее, что, по моему мнению, я пытаюсь выполнить:
class DefaultValueEmployeeTypeManager(models.Manager):
def get_or_create_default_values(self):
first_type = self.model.objects.get_or_create(name='First Type')
second_type = self.model.objects.get_or_create(name='Second Type')
third_type = self.model.objects.get_or_create(name='Third Type')
return (first_type, second_type, third_type)
class Employee(models.Model):
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
defaults = DefaultValueEmployeeTypeManager()
# Code in another file, handling the setup of a new client
from models import EmployeeType
def create_new_client(client):
# make sure the default values are there
EmployeeType.defaults.get_or_create_default_values()
Мой вопрос заключается в том, является ли это приемлемым / ожидаемым поведением для объекта Manager
для обработки?Или это просто @classmethod
(или аналогичный) на модели EmployeeType
?