本文整理汇总了Python中models.Question.full_clean方法的典型用法代码示例。如果您正苦于以下问题:Python Question.full_clean方法的具体用法?Python Question.full_clean怎么用?Python Question.full_clean使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类models.Question
的用法示例。
在下文中一共展示了Question.full_clean方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _questionAdd
# 需要导入模块: from models import Question [as 别名]
# 或者: from models.Question import full_clean [as 别名]
def _questionAdd(requestData, user):
'''
为已有文件增加一个问题的处理过程
'''
# 检查是否有提供paper
keys = requestData.keys()
if 'paper' not in keys:
return packageResult(RESULT_CODE.ERROR, RESULT_MESSAGE.NO_ID)
paperIdSigned = requestData['paper']
# 对id进行数字签名的检查
try:
signer = Signer()
paperId = signer.unsign(paperIdSigned)
except BadSignature:
# 篡改发现处理
return packageResult(RESULT_CODE.ERROR, RESULT_MESSAGE.BAD_SAGNATURE)
# 尝试读取paper信息
paperList = Paper.objects.filter(id=paperId)
if len(paperList) == 0:
return packageResult(RESULT_CODE.ERROR, RESULT_MESSAGE.OBJECT_NOT_EXIST)
paper = paperList[0]
# 检查是否有权限修改
if paper.createBy.id != user.id:
return packageResult(RESULT_CODE.ERROR, RESULT_MESSAGE.NO_PRIVILEGE)
# 遍历Question的所有Field,并尝试在request中寻找是否提供了对应的数据
data = {}
for field in getModelFields(Question):
# 跳过系统自动增加的字段
if field.auto_created:
continue
# 读取request数据
value = requestData.get(field.name, None)
# 特殊处理json的Boolean型的变量
if type(field) == BooleanField:
value = jsonBoolean2Python(value)
# 对创建人和修改人的信息进行特殊处理
if field.name in [USER_CREATE_BY_FIELD_NAME, USER_MODIFY_BY_FIELD_NAME]:
value = user
# 对paper字段进行特殊处理,提交的数据是id转化为对象
if field.name == 'paper':
value = paper
# 对ord 字段进行特殊处理,取当前的问题数量加1
if field.name == 'ord':
# 这里锁定了paper所有question对象
value = paper.question_set.select_for_update().count()
# 如果调用者没有显示执行字段值为空,则不增加到data中去,让模型的默认值发挥作用
# 字段代码不能早于对createBy和modifyBy的处理
if value is None and field.name not in keys:
continue
# 将校验的数据添加到data,准备为创建数据库用
data[field.name] = value
question = Question(**data)
# 进行数据校验
try:
question.full_clean()
except ValidationError as exception:
return packageResult(
RESULT_CODE.ERROR, RESULT_MESSAGE.VALIDATION_ERROR,
{'validationMessage': exception.message_dict}
)
# 写到数据库
question.save()
# 返回成功
return packageResult(RESULT_CODE.SUCCESS, RESULT_MESSAGE.SUCCESS, {'questionId': question.id})