如何更改 Django Admin 中的 OneToOne 模型字段默认消息?

How to Change OneToOne model Field Default Message in Django Admin?

我假设有以下模型。

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',)

    

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

class Replied(BaseModel):
    reply = models.OneToOneField(
        Review,
        on_delete=models.CASCADE,
        <b>error_messages={'unique': 'Reply to this review already exists.'}</b>
    )
    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 already exists.'

所以通过设置verbose_name=… [Django-doc],这个问题也解决了,所有其他错误消息将被修改:

class Replied(BaseModel):
    reply = models.OneToOneField(
        Review,
        on_delete=models.CASCADE,
        <b>verbose_name='review'</b>
    )
    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