models.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from django.db import models
  2. # Create your models here.
  3. class UserInfo(models.Model):
  4. phone = models.CharField(max_length=11, unique=True,verbose_name='手机号')
  5. token=models.CharField(verbose_name='用户TOKEN',max_length=64,null=True,blank=True)
  6. class Meta:
  7. verbose_name = '用户信息'
  8. verbose_name_plural = verbose_name
  9. class UserPlan(models.Model):
  10. user = models.ForeignKey(
  11. UserInfo,
  12. on_delete=models.CASCADE,
  13. related_name='plans',
  14. verbose_name='关联用户'
  15. )
  16. spot_img = models.URLField(
  17. verbose_name='景点图片',
  18. max_length=500,
  19. blank=True,
  20. null=True,
  21. default='' # 设置默认值为空字符串
  22. )
  23. spot_id = models.IntegerField(verbose_name='景点ID')
  24. spot_name = models.CharField(max_length=100, verbose_name='景点名称')
  25. created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
  26. class Meta:
  27. verbose_name = '用户行程'
  28. verbose_name_plural = verbose_name
  29. unique_together = ('user', 'spot_id') # 确保用户不会重复添加同一景点
  30. class UserBehavior(models.Model):
  31. user_info = models.ForeignKey(UserInfo, on_delete=models.CASCADE, related_name='behaviors')
  32. feature_name = models.CharField(max_length=50) # 功能模块名称
  33. usage_count = models.IntegerField(default=0) # 使用次数
  34. last_used = models.DateTimeField(auto_now=True) # 最后使用时间
  35. class Meta:
  36. unique_together = ('user_info', 'feature_name')
  37. verbose_name = '用户行为记录'
  38. verbose_name_plural = verbose_name
  39. class FeatureMapping(models.Model):
  40. """功能到小程序页面的映射"""
  41. user_info = models.ForeignKey(UserInfo, on_delete=models.CASCADE, related_name='Mappings',default=1)
  42. feature_name = models.CharField(max_length=50)
  43. page_path = models.CharField(max_length=100) # 小程序页面路径
  44. priority = models.FloatField(default=1.0) # 业务优先级
  45. class Meta:
  46. verbose_name = '功能页面映射'
  47. verbose_name_plural = verbose_name
  48. def __str__(self):
  49. return f"{self.feature_name} → {self.page_path}"