def save_model(self, request, obj, form, change): obj.save() generate_static_sku_detail_html(obj.sku.id) sku = obj.sku if not sku.default_image_url: # 默认图片空 sku.default_image_url = obj.image.url # 设置商品默认图片 sku.save()
def save_model(self, request, obj, form, change): # 数据保存 obj.save() # 附加逻辑:发出重新生成静态详情页面的任务消息 from celery_tasks.html.tasks import generate_static_sku_detail_html generate_static_sku_detail_html(obj.id)
def save_model(self, request, obj, form, change): obj.save() sku = obj.sku # 获取图片所对应的sku if sku.default_image_url is None: # 如果当前sku没有默认的图片 sku.default_image_url = obj.image.url # 把当前的图片路径设置到sku中 generate_static_sku_detail_html(sku.id)
def save_model(self, request, obj, form, change): """新增商品图片""" obj.save() # SKUImage 类型的对象 generate_static_sku_detail_html(obj.sku.id) # 重新生成商品详情页 # 判断商品是否有默认图片,如果没有, 则在新增商品图片时进行设置默认图片 sku = obj.sku if not sku.default_image_url: # 默认图片为空 sku.default_image_url = obj.image.url # 设置商品默认图片 sku.save()
def update(self, instance, validated_data): # 1 接收参数 specs = validated_data.get('specs') # 2 判断 如果有 就删除 if specs: del validated_data['specs'] # 设置事务开启 with transaction.atomic(): # 设置事务保存点 save_id = transaction.savepoint() try: # 3 先更新SKU数据 try: sku = SKU.objects.filter(id=instance.id).update( **validated_data) except: return Response(status=status.HTTP_400_BAD_REQUEST) # 4 再更新SKU规格表数据 try: for spec in specs: SKUSpecification.objects.filter( sku_id=instance.id, spec_id=spec.get('spec_id')).update( option_id=spec.get('option_id')) except: return Response(status=status.HTTP_400_BAD_REQUEST) # 由于没有default_image 会报错 所以设置指定一个图片 sku.default_image = 'group1/M00/00/02/CtM3BVrPB4GAWkTlAAGuN6wB9fU4220429' sku.save() except: # 设置事务回滚 transaction.savepoint_rollback(save_id) else: # 提交事务 transaction.savepoint_commit(save_id) # 异步任务生成静态文件 from celery_tasks.html.tasks import generate_static_sku_detail_html generate_static_sku_detail_html(instance.id) # 5 返回结果 return instance
def save_model(self, request, obj, form, change): # obj -> SKUImage 对象 obj.sku obj.save() from celery_tasks.html.tasks import generate_static_sku_detail_html generate_static_sku_detail_html(obj.sku.id) # 设置SKU默认图片 sku = obj.sku if not sku.default_image_url: # http://image.meiduo.site:8888/groupxxxxxx sku.default_image_url = obj.image.url sku.save()
def create(self, validated_data): # 1.接收参数 specs = validated_data.get('specs') # 2.判断 如果有 就删除 if specs: del validated_data['specs'] # 设置事务开启 with transaction.atomic(): # 设置事务保存点 sava_id = transaction.savepoint() try: # 3.保存SKU数据 try: sku = SKU.objects.create(**validated_data) except: return Response(status=status.HTTP_400_BAD_REQUEST) # 4.再保存SKU的规格信息 try: for spec in specs: SKUSpecification.objects.create( sku_id=sku.id, spec_id=spec.get('spec_id'), option_id=spec.get('option_id')) except: return Response(status=status.HTTP_400_BAD_REQUEST) # 由于没有default_image 会报错 所以设置指定一个图片 sku.default_image = 'group1/M00/00/02/CtM3BVrPB4GAWkTlAAGuN6wB9fU4220429' sku.save() except: # 设置事务回滚点 transaction.savepoint_rollback(sava_id) else: # 提交事务 transaction.savepoint_commit(sava_id) # 5.异步任务生成静态文件 from celery_tasks.html.tasks import generate_static_sku_detail_html generate_static_sku_detail_html(sku.id) # 6.返回结果 return sku
def save_model(self, request, obj, form, change): """admin后台新增或修改了数据时调用""" obj.save() # 生成静态页面 -- sku详情页面 generate_static_sku_detail_html(obj.sku.id) # 判断sku是否有默认图片, 如果没有, 则在新增商品图片时进行设置 sku = obj.sku # 判断图片为空 if not sku.default_image_url: # 设置商品默认图片 sku.default_image_url = obj.image.url sku.save()
def update(self, instance, validated_data): # 1.接收specs specs = validated_data['specs'] # 2.判断如果有specs 那就删除 if specs: del validated_data['specs'] # 设置事务开启点 with transaction.atomic(): # 设置事务保存点 save_id = transaction.savepoint() try: # 3.然后先更新sku数据 SKU.objects.filter(id=instance.id).update(**validated_data) # # 删除所有SKUSpecification中的数据 # SKUSpec = SKUSpecification.objects.get(sku_id=instance.id) # SKUSpec.delete() # SKUSpec.save() # 4.再更新sku规格数据 for spec in specs: SKUSpecification.objects.filter(sku_id=instance.id, spec_id=spec.get('spec_id'))\ .update( spec_id = spec.get('spec_id'), option_id = spec.get('option_id') ) except: # 设置事务回滚点 transaction.savepoint_rollback(save_id) return serializers.ValidationError("更新错误") else: # 设置事务提交点 transaction.savepoint_commit(save_id) # 5.调用异步任务方法 生成html详情页面 from celery_tasks.html.tasks import generate_static_sku_detail_html generate_static_sku_detail_html(instance.id) # 5.返回结果 return instance
#!/usr/bin/env python #在当前的环境中查找python解释器的路径 #!/home/python/.virtualenvs/meiduo/bin/python #指定python解释器 # 指定当前项目的运行环境 import sys import os import django sys.path.insert(0, '../') os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meiduo.settings.dev") django.setup() from goods.models import SKU from celery_tasks.html.tasks import generate_static_sku_detail_html if __name__ == '__main__': skus = SKU.objects.all() for sku in skus: generate_static_sku_detail_html(sku.id) print('ok')
def save_model(self, request, obj, form, change): obj.save() from celery_tasks.html.tasks import generate_static_sku_detail_html generate_static_sku_detail_html(obj.id)
def delete_model(self, request, obj): sku_id = obj.sku.id obj.delete() from celery_tasks.html.tasks import generate_static_sku_detail_html generate_static_sku_detail_html(sku_id)
def delete_model(self, request, obj): """删除商品图片""" sku_id = obj.sku.id obj.delete() generate_static_sku_detail_html(sku_id) # 重新生成商品详情页
def delete_model(self, request, obj): sku_id=obj.sku.id obj.delete() generate_static_sku_detail_html(sku_id)
#!/home/ubuntu/.virtualenvs/meiduo_water/bin/python3.6 import sys sys.path.insert(0, '../') import os os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'meiduo.settings.dev') import django django.setup() from goods.models import SKU from celery_tasks.html.tasks import generate_static_sku_detail_html if __name__ == '__main__': skus = SKU.objects.all() # for sku in skus: # print(sku.id) # generate_static_sku_detail_html(sku.id) generate_static_sku_detail_html(3)
def save_model(self, request, obj, form, change): obj.save() generate_static_sku_detail_html(obj.id)
# 添加导包路径 : /home/python/code/gz07/meiduo/meiduo_mall import sys # sys.path.append('../') # 表示把 scripts 目录的上一级目录 添加到导包路径中 sys.path.insert(0, '../') print(sys.path) # 加载django配置文件, 注册应用 import os import django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meiduo_mall.settings.dev") django.setup() from celery_tasks.html.tasks import generate_static_sku_detail_html from goods.models import SKU if __name__ == '__main__': '''批量生成所有商品的静态详情页''' skus = SKU.objects.all() for sku in skus: sku_id = sku.id generate_static_sku_detail_html(sku_id) # 生成一个商品的静态详情页 print(sku_id)
def delete_model(self, request, obj): """admin后台删除了数据时调用""" sku_id = obj.sku.id obj.delete() generate_static_sku_detail_html(sku_id)
def save_model(self, request, obj, form, change): '''商品选项信息修改''' obj.save() generate_static_sku_detail_html(obj.sku.id) # 重新生成商品详情页
def save_model(self, request, obj, form, change): # 修改或新增了商品.需要重新生成详情页 obj.save() # obj 商品sku对象 generate_static_sku_detail_html(obj.id)
def save_model(self, request, obj, form, change): """商品选项信息的修改""" obj.save() generate_static_sku_detail_html(obj.sku.id)