【问题标题】:How to Change OneToOne model Field Default Message in Django Admin?如何在 Django Admin 中更改 OneToOne 模型字段默认消息?
【发布时间】:2021-05-31 20:49:54
【问题描述】:

我假设有以下模型。

class Replied(BaseModel):
    reply = models.OneToOneField(Review, on_delete=models.CASCADE)
    show_reply = models.BooleanField(default=False)
    replied_by = models.ForeignKey(User, on_delete=models.CASCADE)

    class Meta:
        verbose_name = 'Reply'
        verbose_name_plural = 'Replies'

    def __str__(self):
        return self.content

当我尝试添加多个回复时,Django 管理员默认给出的错误消息如下。 Reply with this Reply already exists. 我想要这样的特定消息。

已回复此评论。

我该怎么做? 在我看来它应该在管理员中完成所以这是我的 admin.py 代码

@admin.register(Replied)
class RepliedAdmin(ModelAdmin):
    list_display = (
        'replied_by',
        'created_at')

    list_filter = ('replied_by',)

    list_display_links = ('replied_by',)

    

【问题讨论】:

  • 为什么不把reply = ...改成review = ....?这就是您收到此消息的原因。
  • 将我的字段更改为 reply_to 收到相同的消息

标签: python django model django-admin


【解决方案1】:

您可以覆盖error_messages=… parameter [Django-doc]unique 错误消息:

class Replied(BaseModel):
    reply = models.OneToOneField(
        Review,
        on_delete=models.CASCADE,
        error_messages={'unique': 'Reply to this review already exists.'}
    )
    show_reply = models.BooleanField(default=False)
    replied_by = models.ForeignKey(User, on_delete=models.CASCADE)

    class Meta:
        verbose_name = 'Reply'
        verbose_name_plural = 'Replies'

    def __str__(self):
        return self.content

话虽如此,默认消息是:

,code>'unique': '%(model_name)s with this %(field_label)s 已经存在。'

所以通过设置verbose_name=… [Django-doc],这个问题也解决了,其他的所有错误信息都会适应:

class Replied(BaseModel):
    reply = models.OneToOneField(
        Review,
        on_delete=models.CASCADE,
        verbose_name='review'
    )
    show_reply = models.BooleanField(default=False)
    replied_by = models.ForeignKey(User, on_delete=models.CASCADE)

    class Meta:
        verbose_name = 'Reply'
        verbose_name_plural = 'Replies'

    def __str__(self):
        return self.content

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 2019-01-18
    • 2016-08-22
    • 2016-06-10
    • 2023-01-13
    相关资源
    最近更新 更多