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.
djangoBlogStudy/src/owntracks/models.py

57 lines
3.3 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.

#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'