【问题标题】:How to use model field in it's serializer如何在其序列化程序中使用模型字段
【发布时间】:2021-05-23 14:09:40
【问题描述】:

我想有自己的错误消息,我已经在序列化程序中实现了这样的:

class TransactionsValuesSerializer(serializers.ModelSerializer):
    class Meta:
        model = Translations
        fields = ('id', 'value')
        extra_kwargs = {"value": {"error_messages": {"blank": f"Error"}}}

这是模型

class Translations(models.Model):
    class Meta:
        db_table = 'merchants__translations'

    value = models.TextField()
    key = models.ForeignKey(
        TranslationsKeys,
        on_delete=models.CASCADE,
        related_name='translations'
    )
    translation_language = models.ForeignKey(
        TranslationLanguages,
        on_delete=models.CASCADE,
        related_name='translations'
    )

现在,如果用户不输入某些翻译字段,它将显示错误消息“错误”。 Image

有没有办法输出“{key} 中的错误”之类的错误消息?

【问题讨论】:

  • 我不太明白你想在这里完成什么。
  • @ÇağatayBarın 我想获取模型字段并将其值放入错误消息中。模型包含字段“键”。我想获取它并放置到错误中以显示我们在哪个字段中出现错误。

标签: python django django-models serialization django-rest-framework


【解决方案1】:

我从来没有见过 extra_kwargs 的用法。也许你应该这样走。 序列化程序在为空时已经为必填字段引发错误。它会自动显示字段名称。 序列化器字段的默认行为已经是 required=True。

所以,我认为您的序列化程序现在很好。然后,当您发出不包含 value 字段的请求时,序列化程序应该引发类似这样的内容。

HTTP 400 错误请求 {'value': ['此字段不能为空。']}

我想你已经有了你想要的键名value

【讨论】:

  • 我需要一个错误,例如“{field} 不能为空”。
  • 如果有多个空字段,序列化程序会多次引发“此字段可能不是空白”。我想给用户一些更准确的说明。
  • 嗯,它已经为每个字段返回了错误消息。也许您可以在前端处理该错误消息,然后显示每个字段的错误消息。这就是在 Django admin 中的操作方式。它分别为每个字段返回错误,然后 django 为每个字段显示它。我认为你想要的可以在前端轻松完成。您可以使用自定义验证器在后端执行此操作,但最后可能会产生丑陋的代码。
猜你喜欢
  • 2019-01-17
  • 1970-01-01
  • 1970-01-01
  • 2015-12-27
  • 1970-01-01
  • 1970-01-01
  • 2015-09-05
  • 2021-08-14
  • 1970-01-01
相关资源
最近更新 更多