30

I created 'frontend' application using ./manage.py startproject frontend

But for some reason I just want to change the app name in the Django admin to display 'Your Home Page' instead of 'frontend'.

How to do that?

Update: Here is the little more detail:

#settings.py
INSTALLED_APPS = (
    'frontend',
)

and

#frontend/models.py
class Newpage(models.Model):
    #field here
class Oldpage(models.Model):
    #field here
Taku
  • 28,570
  • 11
  • 65
  • 77
  • 1
    possible duplicate of [Can you give a Django app a verbose name for use throughout the admin?](http://stackoverflow.com/questions/612372/can-you-give-a-django-app-a-verbose-name-for-use-throughout-the-admin) – bjunix Sep 25 '15 at 12:06

9 Answers9

49

Yes, you can do it simply

in your apps.py file from your app folder change the verbose_name attribute from your config class. For example:

from django.apps import AppConfig


class FrontendConfig(AppConfig):
    name = 'frontend'
    verbose_name = "Your Home Page"

I test it and works in Django 1.10

UPDATE:

In Django 3+ you should add this in your __init__.py file (from your app)

default_app_config = 'frontend.apps.FrontendConfig'
FACode
  • 843
  • 1
  • 10
  • 19
16

In stars/app.py

from django.apps import AppConfig


class RequestsConfig(AppConfig):
    name = 'stars'
    verbose_name = "Star of India"

in stars/init.py

default_app_config = 'stars.apps.RequestsConfig'

To access the app name in custom menu methods you can try to get that from

model._meta.app_config.verbose_name

Check the Django Doc for reference https://docs.djangoproject.com/en/1.11/ref/applications/#for-application-users

ChrisF
  • 131,190
  • 30
  • 250
  • 321
Akhilraj N S
  • 8,671
  • 5
  • 33
  • 39
6

I am late but just to add an additional step to the solution explained by @FACode.
From the offical docs:

In frontend/apps.py

from django.apps import AppConfig


class FrontendConfig(AppConfig):
    name = 'frontend'
    verbose_name = "Your Home Page"

In app/settings.py

    INSTALLED_APPS = [
        'frontend.apps.FrontendConfig',
        # ...
    ]
5

apps.py

from django.apps import AppConfig

class FrontendConfig(AppConfig):
    name = 'frontend'
    verbose_name = "Your Home Page"

__ init__.py

default_app_config = 'frontend.apps.FrontendConfig'

https://docs.djangoproject.com/en/2.2/ref/applications/

3

1.Try to add app_label to your model that will be registered in Admin.

class MyModel(models.Model):
        pass
    class Meta:
        app_label = 'My APP name'

UPDATE: 2. Steps to rename app(folders):

  • Rename the folder which is in your project root
  • Change any references to your app in their dependencies, i.e. the app's views, the urls.py and settings.py files.
  • Edit the database table django_content_type with the following command: UPDATE django_content_type SET app_label='' WHERE app_label=''
  • Also if you have models, you will have to rename the model tables. For postgres use ALTER TABLE _modelName RENAME TO _modelName. For renaming models, you'll need to change django_content_type.name Note: If your models.py 's Meta Class has app_name listed, make sure to rename that too.
wolendranh
  • 3,994
  • 1
  • 26
  • 37
2

It sounds like you are trying to change how the appname is listed within the Django Admin? This wasn't possible before Django 1.7, but now you can do it like this:

https://docs.djangoproject.com/en/1.7/ref/applications/#for-application-users

seddonym
  • 15,196
  • 6
  • 61
  • 71
1

In apps.py

 from django.apps import AppConfig
 class AccountConfig(AppConfig):
    name = 'app name'
    verbose_name = "new app name"
Community
  • 1
  • 1
hanou23
  • 29
  • 5
1

In Django 2 we can use verbose_name in apps.py but we have to specify the CLass Config in init.py

See related doc here

Georgie
  • 78
  • 10
0

in django 3.0+ you just need to change the folder name and inside the apps.py change the "name" inside the "(appname)Config" class to the new name.