微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的模型字段超出了约束范围?

如何解决为什么我的模型字段超出了约束范围?

模型.py

    class Bug(models.Model):
        title = models.CharField(max_length=200)
        creator = models.ForeignKey(User,on_delete=models.CASCADE,related_name="creator")
        lead = models.ForeignKey(User,default=None,blank=True,null=True,on_delete=models.SET_NULL,related_name="lead")
        contributors = models.ManyToManyField(User,related_name="contributors")
        project = models.ForeignKey(Project,on_delete=models.CASCADE)
        created_at = models.DateTimeField(default=timezone.Now)
        last_modified = models.DateTimeField(auto_Now=True)
        status = models.ForeignKey(Status,default=0)
        description = models.TextField()
    
        class Meta:
            constraints = [
                models.CheckConstraint(
                    check=(
                        models.Q(
                            abs(datetime.Now().microsecond - created_at.microsecond) > 10
                        )
                    ),name="%(app_label)s_%(class)s_exact_date",)
            ]

当我尝试对其运行测试时,出现以下错误NameError: name 'created_at' is not defined

我试图强制执行一个约束,即错误created_at 日期要么正好是它的创建时间,要么在它创建时间的某个严格范围内。我希望在数据库级别强制执行它,因为我试图不仅从表单条目中保护数据(在这种情况下,我可以只添加一个验证器或在字段上添加 editable=false),而且还从任何其他尝试中保护数据通过 ORM 将错误的数据保存到数据库中。我还使用约束而不是验证器,因为我不想覆盖多个函数(save()、update() 等)。

系统信息: Python v3.9.0,Django v3.1.4

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。