我有一个模型UserProfile:
class UserProfile(models.Model):
class Meta:
db_table = 't_user_profile'
display_name = models.CharField(
max_length=20,
unique=True,
error_messages={
'unique': ("A user with that display name already exists."),
},
blank=True
)
我有一个查看功能:
@csrf_exempt
def change_display_name(request):
data = json.loads(request.body.decode('utf-8'))
display_name = data.get('displayName')
try:
user_profile = UserProfile.objects.get(id=2)
except UserProfile.DoesNotExist:
return JsonResponse({'error': 'User does not exist.'}, safe=False)
user_profile.display_name = display_name
user_profile.save()
return JsonResponse({'status': 'SUCCESS'}, safe=False)
除了唯一的display_name之外,如何尝试在JSON中返回我在模型中设置的自定义错误消息?
答案 0 :(得分:0)
您要处理UNIQUE
intergrityError
吗?参见this question
答案 1 :(得分:0)
保存之前,您需要运行验证。这是一个基于https://demos.telerik.com/kendo-ui/treeview/templates的示例:
from django.core.exceptions import ValidationError
user_profile.display_name = display_name
try:
user_profile.full_clean()
except ValidationError as e:
# Do something based on the errors contained in e.message_dict.
return JsonResponse({'error': 'Some error message.'}, safe=False)
user_profile.save()
如果由于某种原因您不想进行完全验证,则可以使用user_profile.validate_unique()
而不是full_clean()
来检查唯一性约束。了解更多documentation。