Передача аргументов функции в экземпляр модели 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]
Вернуться на верх