python - 在信号上比较两个 django 的 DateTimeField
问题描述
我想在将类保存到数据库之前使用信号来检查类的值。我有以下功能
@receiver(pre_save, sender=A)
def on_pre_save_a(sender, **kwargs):
if sender.start_date > sender.end_date:
raise Exception('Error with dates')
我的 A 类看起来像这样
class A(models.Model):
start_date = models.DateTimeField()
scheduled_end_date = models.DateTimeField()
但是当我尝试在管理页面中添加一个新的 A 对象时,会引发一个异常,说'>' not supported between instances of 'DeferredAttribute' and 'DeferredAttribute'
比较这两个 DateTimeField 最好的是什么?这是进行此类检查的最佳方式吗?
谢谢
解决方案
您应该改用instance
参数:
@receiver(pre_save, sender=A)
def on_pre_save_a(sender, instance=None, **kwargs):
if instance.start_date > instance.end_date:
raise Exception('Error with dates')
sender
包含模型类,instance
而是模型的实例。
推荐阅读
- cordova - 如何使用离子键盘插件
- android - 如何在 Android 中创建这种基于网格的布局?
- r - 使用 lapply 修剪数据以去除异常值
- angular - ERROR 错误:未捕获(在承诺中):错误:无法匹配任何路由。URL 段:“列表”错误:无法匹配任何路由。URL 段:“列表”
- javascript - 我想在我的网页上显示 LED 开/关
- maya - Select objects with certain prefix in maya with Python
- java - 引起:java.lang.NoClassDefFoundError: io/jsonwebtoken/SignatureAlgorithm wildfly
- python-3.x - 目标变量为字符/字符串时的动作
- python - 如何将斐波那契数列保存到列表中?
- c++ - 对自定义对象进行排序时,向量的 std::sort 引发错误