You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
django/src/DjangoBlog-master/owntracks/models.py

54 lines
3.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 导入 Django ORM 核心模块models 用于定义数据模型,对应数据库表结构
from django.db import models
# 导入 Django 时区工具now() 用于获取当前时区的时间(避免时区不一致问题)
from django.utils.timezone import now
# Create your models here.
# 说明:该注释为 Django 自动生成,提示开发者在此处定义数据模型类
# 模型类与数据库表的映射关系:每个模型类对应一张数据库表,类属性对应表字段
class OwnTrackLog(models.Model):
"""
轨迹数据模型类:继承自 Django 内置的 models.Model所有数据模型的基类
核心作用:存储用户的地理轨迹信息(用户标识、经纬度、创建时间)
映射数据库表名默认生成规则为「应用名_模型名小写」→ owntracks_owntracklog
"""
# 1. 用户标识字段存储用户唯一标识如设备ID、用户名等
tid = models.CharField(
max_length=100, # 字段最大长度CharField 必填参数),适配多数用户标识场景
null=False, # 数据库层面不允许为空(必填字段),确保数据完整性
verbose_name='用户' # Django 后台管理界面显示的字段名称(支持中文)
)
# 2. 纬度字段:存储地理纬度值(如 39.9042,支持正负值,适配全球地理坐标)
lat = models.FloatField(verbose_name='纬度') # FloatField 对应数据库 float 类型,满足精度需求
# 3. 经度字段:存储地理经度值(如 116.4074,与纬度配合定位地理坐标)
lon = models.FloatField(verbose_name='经度')
# 4. 创建时间字段:记录轨迹数据的生成时间
creation_time = models.DateTimeField(
'创建时间', # verbose_name 的简写形式(第一个参数直接指定后台显示名称)
default=now # 默认值当前时区的当前时间now 是可调用对象,每次创建记录时动态获取)
# 注:区别于 datetime.datetime.now()django.utils.timezone.now() 包含时区信息,符合 Django 时区配置
)
def __str__(self):
"""
模型实例的字符串表示方法:
作用:在 Django 后台、终端打印实例时,显示直观的标识(而非默认的 <OwnTrackLog object>
返回值以用户标识tid作为实例的字符串描述便于区分不同用户的轨迹数据
"""
return self.tid
class Meta:
"""
模型元数据类:用于配置模型的整体属性(不对应表字段,影响表的行为和显示)
所有配置仅作用于当前模型,不影响其他模型
"""
ordering = ['creation_time'] # 默认排序规则:按创建时间升序排列(-creation_time 表示降序)
verbose_name = "OwnTrackLogs" # 后台管理界面显示的「单数模型名称」
verbose_name_plural = verbose_name # 后台管理界面显示的「复数模型名称」(此处与单数一致,避免英文复数歧义)
get_latest_by = 'creation_time' # 支持 Model.objects.latest() 方法,默认按创建时间获取最新一条记录