models.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # coding=utf-8
  2. import datetime
  3. from django.db import models
  4. from django.conf import settings
  5. from utils.exceptions import CustomError
  6. from apps.upload.models import Upload
  7. from apps.option.models import CommodityLevel
  8. from django.core.cache import cache
  9. from django.db.models.signals import post_save
  10. class Commodity(models.Model):
  11. name = models.CharField(max_length=20, verbose_name=u"名称")
  12. introduce = models.CharField(max_length=200, verbose_name=u'简介')
  13. price = models.IntegerField(verbose_name=u'销售单价', null=True, default=0)
  14. discount = models.IntegerField(verbose_name=u'折扣', null=True, default=100)
  15. stock = models.IntegerField(verbose_name=u'库存', null=True, default=0)
  16. publish_date = models.CharField(max_length=100, verbose_name=u'出版日期', null=True)
  17. view_counts = models.IntegerField(verbose_name='浏览量', null=True, editable=False, default=0)
  18. total_sales = models.IntegerField(verbose_name='总销量', null=True, editable=False, default=0)
  19. status = models.PositiveSmallIntegerField(choices=settings.SALES_STATUS_CHOICES, verbose_name=u"状态",
  20. default=settings.ONLINE)
  21. category = models.ForeignKey(CommodityLevel, verbose_name='分类', on_delete=models.PROTECT, null=True,
  22. related_name='main_category')
  23. main_image = models.ForeignKey(Upload, verbose_name='主图', on_delete=models.SET_NULL, null=True,
  24. related_name='main_image')
  25. list_image = models.ForeignKey(Upload, verbose_name='列表图片', on_delete=models.SET_NULL, null=True,
  26. related_name='list_image')
  27. notes = models.CharField(max_length=500, verbose_name=u"备注", null=True)
  28. create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'添加人', related_name='commodity_create_user',
  29. editable=False, on_delete=models.PROTECT)
  30. create_time = models.DateTimeField(verbose_name=u'创建时间', auto_now_add=True, editable=False)
  31. refresh_time = models.DateTimeField(verbose_name=u'刷新时间', auto_now_add=True)
  32. class Meta:
  33. db_table = 'commodity'
  34. verbose_name = u'商品信息'
  35. ordering = ['-id']
  36. default_permissions = ()
  37. permissions = [
  38. ]
  39. class CommodityImages(models.Model):
  40. DETAILS = 1
  41. PARAMETER = 2
  42. TYPE_CHOICE = (
  43. (DETAILS, '详情'),
  44. (PARAMETER, '参数')
  45. )
  46. name = models.CharField(verbose_name=u'名称', max_length=200)
  47. product = models.ForeignKey(Commodity, verbose_name=u'产品', on_delete=models.PROTECT, related_name='product_images')
  48. type = models.PositiveSmallIntegerField(choices=TYPE_CHOICE, default=DETAILS)
  49. image = models.ForeignKey(Upload, verbose_name=u'图片', on_delete=models.PROTECT)
  50. class Meta:
  51. db_table = "commodity_images"
  52. verbose_name = u"产品图片"
  53. ordering = ('name',)
  54. default_permissions = ()
  55. @staticmethod
  56. def getById(id):
  57. try:
  58. id = int(id)
  59. except:
  60. raise CustomError(u'无效的ID')
  61. instance = CommodityImages.objects.filter(pk=id).first()
  62. if not instance:
  63. raise CustomError(u'未找到相应的产品图片')
  64. return instance