Django模型:如何在视图函数中检索自定义错误消息?

2024-04-26 04:19:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模型用户配置文件:

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\u name和在JSON中返回我在模型中设置的自定义错误消息之外,我该如何尝试呢?你知道吗


Tags: name模型truedatagetreturnmodelsrequest
2条回答

是否要处理UNIQUEintergrityError?见this question

保存前需要运行验证。下面是一个基于documentation的示例:

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()检查唯一性约束。阅读更多here。你知道吗

相关问题 更多 >