# 导入Django的models模块，用于定义数据模型
from django.db import models
# 导入Django的时区工具，用于处理时间相关操作
from django.utils.timezone import now


# Create your models here.  # Django自动生成的注释，提示在此处创建数据模型

# 定义一个名为OwnTrackLog的数据模型类，继承自models.Model
# 这个模型用于存储OwnTracks（一个位置追踪应用）的位置日志信息
class OwnTrackLog(models.Model):
    # 定义tid字段，CharField表示字符串类型
    # max_length=100限制最大长度为100字符
    # null=False表示该字段不允许为空
    # verbose_name='用户'用于在admin后台显示的字段名称
    tid = models.CharField(max_length=100, null=False, verbose_name='用户')

    # 定义lat字段，FloatField表示浮点型，用于存储纬度信息
    # verbose_name='纬度'用于在admin后台显示的字段名称
    lat = models.FloatField(verbose_name='纬度')

    # 定义lon字段，FloatField表示浮点型，用于存储经度信息
    # verbose_name='经度'用于在admin后台显示的字段名称
    lon = models.FloatField(verbose_name='经度')

    # 定义creation_time字段，DateTimeField表示日期时间类型
    # '创建时间'是字段的位置参数，等同于verbose_name='创建时间'
    # default=now设置默认值为当前时间（使用Django的时区设置）
    creation_time = models.DateTimeField('创建时间', default=now)

    # 定义对象的字符串表示方法
    # 当打印该模型的实例时，会返回tid字段的值
    def __str__(self):
        return self.tid

    # Meta类用于定义模型的元数据
    class Meta:
        # ordering=['creation_time']指定查询该模型数据时的默认排序方式
        # 按creation_time字段升序排列（加负号表示降序，如['-creation_time']）
        ordering = ['creation_time']
        # verbose_name定义模型在admin后台的单数显示名称
        verbose_name = "OwnTrackLogs"
        # verbose_name_plural定义模型在admin后台的复数显示名称
        verbose_name_plural = verbose_name
        # get_latest_by='creation_time'指定使用creation_time字段来获取最新记录
        # 可以通过模型管理器的latest()方法获取最新记录
        get_latest_by = 'creation_time'