В настоящее время я пытаюсь создать автоматический экземпляр модели django.Эта функция примет пару аргументов, создаст несколько моделей django, свяжет некоторые внешние ключи вместе, сохранит партию и вернет мне основную модель.Это все нормально, но в конце концов, функция принимает 4 обычных аргумента и 2 кортежа (заполненных именем типа контента и массивом аргументов для вызова другой функции).
Это приводит к следующей функции def:
def create_rule(profile, lifestyles, bool, title, input, output):
rule = Rule.objects.create(
user_profile=profile,
lifestyles=lifestyles,
bool=bool,
title=title,
)
models = ContentType.objects.filter(app_label="rules")
input_cls = models.get(model=input[0]).model_class()
input_cls.objects.create(*input[1], rule=rule)
output_cls = models.get(model=output[0]).model_class()
output_cls.objects.create(*output[1], rule=rule)
return rule
Средний вызов функции может выглядеть примерно так:
create_rule(profile, '1,3,6,7', 1, "Switch off when 5:00",
('eventruleinput', [5, 'start']),
('propruleoutput', [35, 'Switch', 0]))
Есть ли хороший способуменьшить количество аргументов, которые я использую (не правда, я думаю)?Есть ли лучший способ структурировать этот вызов функции?Я делаю это совершенно неправильно?
Примечание: это всего лишь реализация макета, мне интересно, не хочу ли я подойти к этой проблеме следующим образом.