|
|
#gjl
|
|
|
from django.db import models
|
|
|
from django.utils.timezone import now
|
|
|
|
|
|
|
|
|
# Create your models here.
|
|
|
|
|
|
# 定义一个名为 OwnTrackLog 的数据库模型,用于存储由 OwnTracks 应用程序上传的位置日志数据。
|
|
|
# 该模型继承自 Django 的 models.Model 类,每个类属性对应数据库中的一列。
|
|
|
class OwnTrackLog(models.Model):
|
|
|
# gjl (Tracker ID): 标识发送位置信息的设备或用户。
|
|
|
# gjl 使用 CharField 存储字符串,最大长度为100个字符,不允许为空(null=False)。
|
|
|
# gjl verbose_name 设置为 '用户',在 Django 管理后台等界面中显示为“用户”。
|
|
|
tid = models.CharField(max_length=100, null=False, verbose_name='用户')
|
|
|
|
|
|
# gjl lat: 存储地理位置的纬度坐标。
|
|
|
# gjl 使用 FloatField 存储浮点数,表示纬度值(例如:39.9042)。
|
|
|
# gjl verbose_name 设置为 '纬度',用于在管理后台中显示友好的字段名。
|
|
|
lat = models.FloatField(verbose_name='纬度')
|
|
|
|
|
|
# gjl lon: 存储地理位置的经度坐标。
|
|
|
# gjl 使用 FloatField 存储浮点数,表示经度值(例如:116.4074)。
|
|
|
# gjlverbose_name 设置为 '经度',用于在管理后台中显示友好的字段名。
|
|
|
lon = models.FloatField(verbose_name='经度')
|
|
|
|
|
|
# gjl creation_time: 记录该位置信息被创建的时间。
|
|
|
# gjl使用 DateTimeField 存储日期和时间。
|
|
|
# gjl第一个参数 '创建时间' 是该字段的 verbose_name(可读名称)。
|
|
|
# gjldefault=now 表示默认值为当前时间(注意:这里传入的是函数引用 now,不是 now(),以避免迁移时时间固定)。
|
|
|
creation_time = models.DateTimeField('创建时间', default=now)
|
|
|
|
|
|
# gjl __str__(self) 方法定义了该模型实例对象在转换为字符串时的行为。
|
|
|
# gjl 在 Django 管理后台、shell 或其他需要显示对象的地方,会显示此方法的返回值。
|
|
|
# gjl此处返回 self.tid,即该记录对应的用户/设备ID,便于识别。
|
|
|
def __str__(self):
|
|
|
return self.tid
|
|
|
|
|
|
# Meta 类是 Django 模型的内部类,用于定义模型的元数据(metadata),不作为一个字段存在。
|
|
|
class Meta:
|
|
|
# ordering: 指定查询该模型时的默认排序方式。
|
|
|
# ['creation_time'] 表示按 creation_time 字段升序排列(最早的数据在前)。
|
|
|
# 若需降序,可写为 ['-creation_time']。
|
|
|
ordering = ['creation_time']
|
|
|
|
|
|
# verbose_name: 指定该模型在 Django 管理后台或其他用户界面中的可读单数名称。
|
|
|
# 这里设置为 "OwnTrackLogs",会在管理后台的菜单中显示为此名称。
|
|
|
verbose_name = "OwnTrackLogs"
|
|
|
|
|
|
# verbose_name_plural: 指定该模型的可读复数名称。
|
|
|
# 通常 Django 会自动加 's',但有时需要自定义。
|
|
|
# 此处将其设置为与 verbose_name 相同,即单复数形式一致,都显示为 "OwnTrackLogs"。
|
|
|
verbose_name_plural = verbose_name
|
|
|
|
|
|
# get_latest_by: 指定用于获取最新记录的字段。
|
|
|
# 当调用模型管理器的 latest() 方法时,Django 会使用此字段进行排序并返回最新的对象。
|
|
|
# 例如:OwnTrackLog.objects.latest() 将返回 creation_time 最晚的记录。
|
|
|
get_latest_by = 'creation_time' |