将函数参数传递给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)

现在我正试图使它可重用,并将改变的东西移动到函数参数。然而,我有一个问题,转换nameproduct_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]

最新更新