如何更改 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
我假设有以下模型。
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