您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

models.py 2.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. from django.db import models
  2. from oscar.apps.address.models import UserAddress
  3. from oscar.apps.offer.models import Benefit, Condition
  4. from oscar.models.fields import AutoSlugField
  5. class SluggedTestModel(models.Model):
  6. title = models.CharField(max_length=42)
  7. slug = AutoSlugField(populate_from='title')
  8. class ChildSluggedTestModel(SluggedTestModel):
  9. pass
  10. class CustomSluggedTestModel(models.Model):
  11. title = models.CharField(max_length=42)
  12. slug = AutoSlugField(populate_from='title',
  13. separator="_",
  14. uppercase=True)
  15. class BasketOwnerCalledBarry(Condition):
  16. class Meta:
  17. proxy = True
  18. app_label = 'tests'
  19. def is_satisfied(self, offer, basket):
  20. if not basket.owner:
  21. return False
  22. return basket.owner.first_name.lower() == 'barry'
  23. def can_apply_condition(self, product):
  24. return False
  25. class BaseOfferModel(models.Model):
  26. class Meta:
  27. abstract = True
  28. app_label = 'tests'
  29. class CustomBenefitModel(BaseOfferModel, Benefit):
  30. name = 'Test benefit'
  31. class Meta:
  32. proxy = True
  33. app_label = 'tests'
  34. def __str__(self):
  35. return self.name
  36. @property
  37. def description(self):
  38. return self.name
  39. class CustomConditionModel(Condition):
  40. name = 'Test condition'
  41. class Meta:
  42. proxy = True
  43. app_label = 'tests'
  44. def is_satisfied(self, offer, basket):
  45. return True
  46. def can_apply_condition(self, product):
  47. return True
  48. class CustomBenefitWithoutName(Benefit):
  49. class Meta:
  50. proxy = True
  51. app_label = 'tests'
  52. description = 'test'
  53. class CustomConditionWithoutName(Condition):
  54. class Meta:
  55. proxy = True
  56. app_label = 'tests'
  57. class UserAddressModelWithCustomBaseFields(UserAddress):
  58. class Meta:
  59. proxy = True
  60. app_label = 'tests'
  61. base_fields = ['line1', 'line4']
  62. class UserAddressModelWithCustomHashFields(UserAddress):
  63. class Meta:
  64. proxy = True
  65. app_label = 'tests'
  66. hash_fields = ['line1', 'line4']