将管理字段(created_on/by、laste_edited_on/by)添加到现有模型的 Django 抽象模型
项目描述
Django 模型管理字段
Django是当今最流行的 Python Web 框架之一。重要的是,它提供了一个ORM,允许我们将模型定义为 Python 类,Django 为我们映射到数据库表示。
我有一个非常普遍、几乎无处不在的愿望/需要,就是针对所有数据库对象保留一些记录,包括谁创建了它们、何时以及谁最后编辑了它们以及何时。非常基本的跟踪字段。鉴于需求的普遍性,最好将其作为我的模型派生的抽象模型来实现。
模型的基本Django示例:
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
可以这样扩展:
from django.db import models
from django_model_admin_fields import AdminModel
class Person(AdminModel):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
它具有将以下字段静默添加到模型中的简单效果:
created_by = models.ForeignKey(User, verbose_name='Created By',
related_name='%(class)ss_created',
editable=False, null=True, on_delete=models.SET_NULL)
created_on = models.DateTimeField('Time of Creation', editable=False, null=True)
created_on_tz = TimeZoneField('Time of Creation, Timezone',
default=settings.TIME_ZONE, editable=False)
last_edited_by = models.ForeignKey(User, verbose_name='Last Edited By',
related_name='%(class)ss_last_edited',
editable=False, null=True, on_delete=models.SET_NULL)
last_edited_on = models.DateTimeField('Time of Last Edit', editable=False, null=True)
last_edited_on_tz = TimeZoneField('Time of Last Edit, Timezone',
default=settings.TIME_ZONE, editable=False)
(当然更准确的描述在__init__.py
)
重要的是,它还覆盖了 mmodelsave()
方法以在调用之前设置这六个字段super().save()
(即默认保存方法),因此这些字段是自动管理的。
当前活动的Django 时区也被保存,以支持对已保存时间的合理人类解释(如 Django 的DateTimeField)不知道时区。
为了更容易地使用这两个属性,模型中还添加了两个属性:它们是天真和created_on_local
字段的last_edited_on_local
时区感知版本。created_one
last_edited_on
为了说明上面 Person 示例的用法:
person = Person()
person.first_name = "John"
person.last_name = "Smith"
person.save
print(f"{person.first_name} {person.last_name}")
print(f"was created by {person.created_by} on {person.created_on_local}.")
当然,要使用当地时间,您需要激活创建用户所在的时区。为此,您需要先了解它。Javascript 库jstz在检测用户时区方面很有用,并且在 django 文档中正确设置 Django 时区有一个很好的指南。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
django_model_admin_fields-0.1.tar.gz
(9.4 kB
查看哈希)
内置分布
关
django_model_admin_fields -0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 509dbfc71806a79eed9a3f5cf6ebfed2ca489c35f3800882a5eacaa29e75bdb6 |
|
MD5 | b1345d117bb27ca8b643094dacc634da |
|
布莱克2-256 | 2de1451586beccc42db698c770c849fcf9c82637bc1690ce73843f9ce95e2265 |
关
django_model_admin_fields -0.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 848e71ece9cf5af9b8f72873ced7816d9988d8932a75ff7e7baf47de78b7f8d3 |
|
MD5 | 1f885e861f4dfa897f2196a29adf0e67 |
|
布莱克2-256 | 9084911f5fdbf562ed5306c5b480ab6e5733f86acc996db15324359c54bc75aa |