模型类有约束群改bug修复(源码)

模型类有约束群改bug修复(源码)

有唯一索引情况下,不能直接完成群改

from django.db import models
from utils.model import BaseModel
class Book(BaseModel):
    # 单个字段有唯一索引
    name = models.CharField(max_length=64, unique=True)
	# ...
    class Meta:
        db_table = 'old_boy_book'
        verbose_name = '书籍'
        verbose_name_plural = verbose_name
        # 多个字段有联合唯一
        unique_together = ('name', 'publish')

修改drf源码:rest_framework/validators.py

"""
修改该文件下的所有
if self.instance is not None:
为
if self.instance is not None and not isinstance(self.instance, list):

eg:
if self.instance is not None and not isinstance(self.instance, list):
	return queryset.exclude(pk=self.instance.pk)
"""

不做处理的报错信息

# 错误信息
"""
'list' object has no attribute 'pk'
或者
'list' object has no attribute 那些有唯一索引的字段名
"""

# 原因分析
"""
validators.py就是为那些有唯一索引字段提供校验的模块,而再群改环境下,self.instance的值不是model类对象,而是装有model类对象的list,当然不能直接访问model类的字段
"""
posted @ 2019-11-19 14:56  张明岩  阅读(139)  评论(0编辑  收藏  举报