python - 在 django admin 的保存模型中构造条件
问题描述
我有联系人模型,我想将其构建为只有 1 条记录,字段为 is_active=True。但我不想引发错误,我希望它通知我并且如果管理站点中之前存在 is_active=True 的联系人记录,则不要保存记录。“联系人不能同时拥有超过 1 个活动联系人。”
class Contact(models.Model):
name = models.CharField(max_length=30)
is_active = models.BooleanField(blank=True)
def save(self, *args, **kwargs):
if self.is_active:
if Contact.objects.filter(Q(is_active=True), ~Q(id=self.id)):
// raise ValidationError("Contact can't have more than 1 active contact at same time.")
return super(Contact, self).save(*args, **kwargs)
解决方案
在自定义save
函数中,简单地而不是抛出错误,而是在不执行请求的情况下返回它:
class Contact(models.Model):
name = models.CharField(max_length=30)
is_active = models.BooleanField(blank=True)
def save(self, *args, **kwargs):
if self.is_active:
if Contact.objects.filter(Q(is_active=True), ~Q(id=self.id)):
return
return super(Contact, self).save(*args, **kwargs)
推荐阅读
- apache-spark - 在 Kerberos 环境中无法通过 Spark 访问 Hive:客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS]
- c++ - 使用 MinGW-w64 在 Win consoleapi 中获取奇怪的结构和 typedef 错误
- reactjs - antd和axios中如何给客户数据赋值
- spring - Spring集成(重试策略)
- swift - 如何创建发出已点击选项的组合管道
- javascript - 搜索结果无法从滑出式响应侧边栏菜单中滚动
- c# - 如何在 C# 中读取 XML 文件并在 datagridview 中显示
- linux - 将第一个命令的输出传递给管道中的下一个命令的 Shell 脚本
- algorithm - 均匀分布的随机数从一个范围到另一个范围的节俭转换
- firebase - 有没有办法可以将数据添加到firestore中集合的父文档和子文档?