Я пишу сервис для своего интерфейса, чтобы он использовал сервис обновлений, имеющий следующую форму полезной нагрузки. Однако, когда я добавляю некоторые навыки, например: ["Custom," Plumbing "] в моем skill_sub_category, все работает отлично, но когда я пытаюсь удалить навык из категории skill_sub_category, список не обновляется. Вот как выглядит моя полезная нагрузка для обновления custom_item:
{
"custom_items":
[
{
"item_name": "item_custom",
"item_type": 1,
«измерение»: «3 м²»,
"skill_sub_category": ["Custom", "Сантехника", "Ковер"],
«цена»: «80»,
"клиент": "ДРУГОЙ",
"Год": "2019",
"items_source": 0,
"id": 582}]}
Моя реализация выглядит следующим образом.
def update_items(self, request, params={}, *args, **kwargs):
"""
:param request:
:param params:
:param args:
:param kwargs:
:return:
"""
logger.debug("Entering the gate of the update items function")
logger.debug("** Params are being used ** :%s" % params)
# print(params)
logger.debug("** Params to be updated ** :%s" % params)
for custom in params['custom_items']:
item_name = custom['item_name']
item_type = str(custom['item_type'])
item_type = ItemType.objects.get(pk=item_type)
measurement = sanitize_data(custom['measurement'])
# measurement = custom['measurement'].replace("", u"²")
category = custom['skill_sub_category']
# year = custom['year'] # Frontenders do not want us to send through the year. which makes since
client = str(custom['client'])
client = Client.objects.get(name=client)
# year = PriceList.objects.get(year=year) #so we commented that
fee = custom['price']
items_source = custom['items_source']
get_sp = self.staff
logger.debug("**Fetching the Staff :%s" % get_sp)
fetched_spp = get_sp.sp_id
logger.debug("**Fetching the SP_id **:%s" % fetched_spp)
try:
item = Item.objects.get(pk=custom['id'], item_creator=fetched_spp)
except Item.DoesNotExist:
continue
item.name = item_name
item.item_type = item_type
item.measurement = measurement
item.items_source = items_source
item.item_creator = fetched_spp
item.activation_status = Item.ACTIVE
item.is_custom_items = True
item.save()
price = item.price.first()
price.client = client
price.fee = fee
# price.price_list = year # And it's still working this way
price.save()
which_items_is_being_updated = Item.objects.get(pk=custom['id'])
get_item_updated = which_items_is_being_updated.id
logger.debug('**Item updated is ** :%s' % get_item_updated)
print (which_items_is_being_updated)
for skill in SkillSubCategory.objects.filter(name__in=category):
skill.item.add(item)
return {"success": True, "message": "Item updated successfuly"}
Все остальное работает нормально, когда я обновляю skill_sub_category, удаляя навык. Может кто-нибудь подскажет, как решить проблему, когда навык нужно удалить из списка skill_sub_category?