models.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from django.db import models
  2. from django.contrib.auth.models import AbstractUser
  3. # Create your models here.
  4. class UserInfo(AbstractUser):
  5. phone = models.CharField(max_length=11, unique=True)
  6. # 使用手机号作为用户名字段
  7. USERNAME_FIELD = 'phone'
  8. REQUIRED_FIELDS = [] # 移除了默认的username要求
  9. class Meta:
  10. verbose_name = '用户信息'
  11. verbose_name_plural = verbose_name
  12. db_table = 'auth_user' # 关键!使用与Django默认相同的表名
  13. def __str__(self):
  14. return self.phone
  15. class UserPlan(models.Model):
  16. user = models.ForeignKey(
  17. UserInfo,
  18. on_delete=models.CASCADE,
  19. related_name='plans',
  20. verbose_name='关联用户'
  21. )
  22. spot_img = models.URLField(
  23. verbose_name='景点图片',
  24. max_length=500,
  25. blank=True,
  26. null=True,
  27. default='' # 设置默认值为空字符串
  28. )
  29. spot_id = models.IntegerField(verbose_name='景点ID')
  30. spot_name = models.CharField(max_length=100, verbose_name='景点名称')
  31. created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
  32. class Meta:
  33. verbose_name = '用户行程'
  34. verbose_name_plural = verbose_name
  35. unique_together = ('user', 'spot_id') # 确保用户不会重复添加同一景点