Передача аргументов функции в экземпляр модели django
У меня есть функция, которая сохраняет модель в базу данных на основе предоставленного словаря элементов.
def bulk_creator_product_segment(df_records):
"""
Create object in Product segment model
Saves objects in bulk based on unique constraint
"""
model_instances = [models.Product_segment(
name=record["SegmentName"],
product_category=models.Product_category.objects.get(name=record["CategoryName"]),
) for record in df_records]
models.Product_segment.objects.bulk_create(model_instances, ignore_conflicts=True)
Теперь я пытаюсь сделать его многоразовым и переместить изменяемые вещи в аргументы функции. Однако у меня возникает проблема с преобразованием name
и product_category
, которые являются полем модели, в аргументы функции, что означает примерно следующее:
bulk_creator_product_segment(df_records, firstfield, secondfield):
model_instances = [models.Product_segment(
firstfield=record["SegmentName"],
secondfield=models.Product_category.objects.get(name=record["CategoryName"]),
) for record in df_records]
Он будет читать firstfield
не как аргумент, а как имена полей в Product_segment, что неправильно.
Вы имеете в виду, что хотите использовать эти аргументы в качестве ключевых слов в Product_segment
? Если да, то вы можете использовать распаковку диктов следующим образом:
def bulk_creator_product_segment(df_records, firstfield, secondfield):
model_instances = [models.Product_segment(
**{
firstfield: record["SegmentName"],
secondfield: models.Product_category.objects.get(name=record["CategoryName"]),
},
) for record in df_records]