gpt4 book ai didi

django - 保存模型之前检查一些字段

转载 作者:行者123 更新时间:2023-12-02 04:32:34 24 4
gpt4 key购买 nike

我需要检查其他模型是否已创建,是否已填充字段。如果另一个模型具有具有任何值的字段,则尝试创建的当前模型不应发生。如果可能的话发送错误消息。

这是我当前的代码:

class Video(models.Model):
#####
# Fields of model
#####

def save(self, force_insert=False, force_update=False, *args, **kwargs):
some_video = Video.objects.all().filter(field_boolean=True).first()
if not some_video:
# Save current model
super(Video, self).save(force_insert, force_update, *args, **kwargs)
else:
# avoid save method for the current model created and send error message

我做错了什么或者我错过了什么?正确的做法是什么?

最佳答案

首先,您不需要同时使用all()filter()。其次,使用exists()而不是 first()。如果 QuerySet 包含任何结果,则返回 True,否则返回 False。这尝试以尽可能最简单、最快的方式执行查询。

class Video(models.Model):
name = models.CharField(max_length=30)
field_boolean = models.BooleanField()

def __str__(self):
return self.name

def save(self, *args, **kwargs):
if Video.objects.filter(field_boolean=True).exists():
print('Video with field_boolean=True exists')
else:
super(Video, self).save(*args, **kwargs)

关于django - 保存模型之前检查一些字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37268119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com