models.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. # coding=utf-8
  2. from django.db import models
  3. from django.utils import timezone
  4. from django.conf import settings
  5. from utils.exceptions import CustomError
  6. from apps.images.models import Images
  7. from apps.option.models import Option
  8. class Commodity(models.Model):
  9. CASH = 1
  10. POINT = 2
  11. TYPE_CHOICE = (
  12. (CASH, u'现金商品'),
  13. (POINT, u'积分商品')
  14. )
  15. TYPE_JSON = [{'id': item[0], 'value': item[1]} for item in TYPE_CHOICE]
  16. name = models.CharField(verbose_name=u'商品名称', max_length=100)
  17. category = models.ForeignKey(Option, verbose_name=u'类别', on_delete=models.PROTECT)
  18. show_image = models.ForeignKey(Images, verbose_name=u'图片', on_delete=models.PROTECT, null=True, blank=True)
  19. initial_sale_count = models.IntegerField(verbose_name=u'起始销量', default=0)
  20. total_sales = models.IntegerField(verbose_name=u'实际总销量', default=0, editable=False)
  21. sort = models.PositiveSmallIntegerField(verbose_name=u'排序', default=0)
  22. type = models.PositiveSmallIntegerField(verbose_name=u'类型', choices=TYPE_CHOICE, default=CASH)
  23. price = models.BigIntegerField(verbose_name=u'销售价格', default=0)
  24. vip_price = models.BigIntegerField(verbose_name=u'会员价格', default=0)
  25. point_price = models.BigIntegerField(verbose_name=u'积分价格', default=0)
  26. status = models.PositiveSmallIntegerField(choices=settings.SALES_STATUS_CHOICES, verbose_name=u"状态", default=settings.ONLINE)
  27. notes = models.CharField(max_length=500, verbose_name=u"备注", null=True, blank=True)
  28. create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'创建人', editable=False, on_delete=models.PROTECT)
  29. create_time = models.DateTimeField(verbose_name=u"创建时间", default=timezone.now, editable=False)
  30. delete = models.BooleanField(verbose_name=u'删除', default=False, editable=False)
  31. class Meta:
  32. db_table = "commodity"
  33. verbose_name = u'商品信息'
  34. ordering = ['sort','-id']
  35. index_together = (
  36. 'name',
  37. 'create_time',
  38. )
  39. default_permissions = ()
  40. permissions = []
  41. class CommodityImage(models.Model):
  42. DETAILS = 1
  43. CAROUSEL = 2
  44. TYPE_CHOICE = (
  45. (DETAILS, u'详情'),
  46. (CAROUSEL, u'轮播')
  47. )
  48. commodity = models.ForeignKey(Commodity, verbose_name=u'商品', on_delete=models.PROTECT, editable=False)
  49. type = models.PositiveSmallIntegerField(choices=TYPE_CHOICE, default=DETAILS)
  50. image = models.ForeignKey(Images, verbose_name=u'图片', on_delete=models.PROTECT)
  51. class Meta:
  52. db_table = "commodity_image"
  53. verbose_name = u'商品图片'
  54. default_permissions = ()
  55. permissions = []
  56. @staticmethod
  57. def getById(id):
  58. try:
  59. id = int(id)
  60. except:
  61. raise CustomError(u'无效的ID')
  62. instance = CommodityImage.objects.filter(pk=id).first()
  63. if not instance:
  64. raise CustomError(u'未找到相应的产品图片')
  65. return instance