Neo*_*ang 10 python database django
我的Django模型有一个名为'updatedOn'的日期时间字段,我需要在此模型上使用库函数来计算一些统计信息,但该函数假定日期时间字段名称为'时间',这是函数使用日期时间的方式:
c = qset.filter(time__year=tt.year, time__month=tt.month, time__day=tt.day).count();
Run Code Online (Sandbox Code Playgroud)
在不触及库代码的情况下,如何创建别名'time'来引用'updatedOn'字段,以便我可以使用该函数?
这个旧的Django Snippet为我工作,直到 Django 1.11。正如@Jaberwocky 评论的那样virtual_only在Django 2.0 中被删除
但是,弃用警告显示该字段已弃用,以支持private_only,尽管在上述链接中删除的功能中并未提及这一点。
class AliasField(models.Field):
# def contribute_to_class(self, cls, name, virtual_only=False):
# '''
# virtual_only is deprecated in favor of private_only
# '''
# super(AliasField, self).contribute_to_class(cls, name, virtual_only=True)
# setattr(cls, name, self)
def contribute_to_class(self, cls, name, private_only=False):
'''
virtual_only is deprecated in favor of private_only
'''
super(AliasField, self).contribute_to_class(cls, name, private_only=True)
setattr(cls, name, self)
def __get__(self, instance, instance_type=None):
return getattr(instance, self.db_column)
class Order(models.Model):
"""
The main order model
"""
number = AliasField(db_column='id')
Run Code Online (Sandbox Code Playgroud)
为模型中的字段创建属性:
class MyModel(moels.Model):
updated_on = models.DateTimeField()
def _get_time(self):
return self.updated_on
time = property(_get_time)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9474 次 |
| 最近记录: |