Python 如何从django管理界面更改django中的模型名称?

Python 如何从django管理界面更改django中的模型名称?,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,使用“verbose_name”,我们可以更改模型的名称,但我希望这个过程是动态的,就像从管理面板内部一样,它将被重命名,这样就不必硬编码 有人能提出任何解决方案吗?您可以为此实现某种模型,该模型将存储更改后的模型名称,如: class ModelName(models.Model): model_key = models.CharField(max_length=128, unique=True) model_name = models.CharField(max_length

使用“verbose_name”,我们可以更改模型的名称,但我希望这个过程是动态的,就像从管理面板内部一样,它将被重命名,这样就不必硬编码


有人能提出任何解决方案吗?

您可以为此实现某种模型,该模型将存储更改后的模型名称,如:

class ModelName(models.Model):
    model_key = models.CharField(max_length=128, unique=True)
    model_name = models.CharField(max_length=128)

def model_name(name):
    try:
        return ModelName.objects.get(model_key=name).model_name
    except ModelName.DoesNotExist:
        return name
接下来,我们可以创建一个惰性解析名称的类,如:

from django.utils.functional import lazy

model_name_lazy = lazy(model_name, str)
现在,我们可以将对象的名称设置为:

class MyModel(models.Model):

    # ...

    class Meta:
        verbose_name = model_name_lazy('mymodel')
然后通过修改
ModelName
模型,例如在Django管理页面上,您可以使用
model\u键添加/更改
ModelName
对象为
'mymodel'
,然后该模型的详细名称将是相应的
model\u name
字段