models.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. # coding=utf-8
  2. from django.db import models
  3. from utils.exceptions import CustomError
  4. from apps.images.models import Images
  5. class Brand(models.Model):
  6. name = models.CharField(max_length=100, verbose_name=u"名称")
  7. enabled = models.BooleanField(verbose_name=u"在售", default=True)
  8. notes = models.CharField(max_length=500, verbose_name=u"备注", null=True)
  9. delete = models.BooleanField(verbose_name=u"删除", default=False, editable=False)
  10. class Meta:
  11. db_table = "vehicle_brand"
  12. verbose_name = u"品牌"
  13. ordering = [ '-id']
  14. index_together = (
  15. 'name',
  16. )
  17. default_permissions = ()
  18. class Series(models.Model):
  19. brand = models.ForeignKey(Brand, verbose_name=u"品牌", on_delete=models.PROTECT)
  20. thumbnail = models.ForeignKey(Images, verbose_name=u'缩略图', on_delete=models.PROTECT, null=True)
  21. name = models.CharField(max_length=100, verbose_name=u"名称")
  22. min_price = models.FloatField(verbose_name=u'最低指导价',default=0)
  23. enabled = models.BooleanField(verbose_name=u"在售", default=True)
  24. is_hot = models.BooleanField(verbose_name=u"热门", default=False)
  25. notes = models.CharField(max_length=500, verbose_name=u"备注", null=True)
  26. delete = models.BooleanField(verbose_name=u"删除", default=False, editable=False)
  27. class Meta:
  28. db_table = "vehicle_series"
  29. verbose_name = u"车系管理"
  30. ordering = ['-id']
  31. index_together = (
  32. 'name',
  33. )
  34. default_permissions = ()
  35. permissions = [
  36. ('browse_vehicle_series', u'查看'),
  37. ('add_vehicle_series', u'添加'),
  38. ('edit_vehicle_series', u'修改'),
  39. ('delete_vehicle_series', u'删除'),
  40. ]
  41. class Model(models.Model):
  42. series = models.ForeignKey(Series, related_name='model_ref_series', verbose_name=u"车系", on_delete=models.PROTECT)
  43. name = models.CharField(max_length=100, verbose_name=u"名称")
  44. price = models.BigIntegerField(verbose_name=u'指导价')
  45. sale_price = models.BigIntegerField(verbose_name=u'售价')
  46. engine = models.CharField(max_length=50, verbose_name=u'发动机',)
  47. car_body = models.CharField(max_length=500, verbose_name=u'车身结构',)
  48. transmission = models.CharField(max_length=500, verbose_name=u'变速箱',)
  49. notes = models.CharField(max_length=500, verbose_name=u"备注", null=True)
  50. enabled = models.BooleanField(verbose_name=u'在用', default=True)
  51. delete = models.BooleanField(verbose_name=u"删除", default=False, editable=False)
  52. class Meta:
  53. db_table = "vehicle_model"
  54. verbose_name = u"车型管理"
  55. ordering = ['-id']
  56. index_together = (
  57. 'name',
  58. )
  59. default_permissions = ()
  60. permissions = [
  61. ('browse_vehicle_model', u'查看'),
  62. ('add_vehicle_model', u'添加'),
  63. ('edit_vehicle_model', u'修改'),
  64. ('delete_vehicle_model', u'删除'),
  65. ]
  66. @staticmethod
  67. def getById(id):
  68. try:
  69. id = int(id)
  70. except:
  71. raise CustomError(u'无效的车型id')
  72. instance = Model.objects.filter(pk=id).first()
  73. if not instance:
  74. raise CustomError(u'未找到相应的车型')
  75. return instance
  76. def canSale(self):
  77. series = self.series
  78. brand = series.brand
  79. if self.delete or series.delete or brand.delete:
  80. return False
  81. if not self.enabled or not series.enabled or not brand.enabled:
  82. return False
  83. return True
  84. class VehicleImg(models.Model):
  85. vehicle_model = models.ForeignKey(Model, verbose_name=u'车型', on_delete=models.PROTECT)
  86. img = models.ForeignKey(Images, verbose_name=u'图片', on_delete=models.PROTECT)
  87. class Meta:
  88. db_table = 'vehicle_img'
  89. verbose_name = u'整车图片'
  90. default_permissions = ()
  91. class VehicleModelImg(models.Model):
  92. vehicle_model = models.ForeignKey(Model, verbose_name=u'车型', on_delete=models.PROTECT)
  93. img = models.ForeignKey(Images, verbose_name=u'图片', on_delete=models.PROTECT)
  94. class Meta:
  95. db_table = 'vehicle_model_img'
  96. verbose_name = u'车型图片'
  97. default_permissions = ()