models.py 3.1 KB

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