site pelicula latest descargar python django

python - pelicula - django windows



¿Puedes darle a una aplicación Django un nombre detallado para usar en todo el administrador? (12)

Bueno, comencé una aplicación llamada todo y ahora decidí que quería que se llamara Tareas . El problema es que ya tengo datos dentro de mi mesa, así que mi trabajo fue el siguiente. Colocado en el models.py:

class Meta: app_label = ''Tasks'' db_table = ''mytodo_todo''

Espero eso ayude.

De la misma manera que puede dar campos y modelos de nombres detallados que aparecen en el administrador de Django, ¿puede darle a la aplicación un nombre personalizado?


Dales una propiedad verbose_name.

No te hagas ilusiones. También deberá copiar la vista de índice de django.contrib.admin.sites en su propia vista de ProjectAdminSite e incluirla en su propia instancia de administración personalizada:

class ProjectAdminSite(AdminSite): def index(self, request, extra_context=None): copied stuff here... admin.site = ProjectAdminSite()

luego modifique la vista copiada para que use su propiedad verbose_name como la etiqueta de la aplicación.

Lo hice agregando algo así como esto a la vista copiada:

try: app_name = model_admin.verbose_name except AttributeError: app_name = app_label

Mientras ajusta la vista de índice, ¿por qué no agrega también una propiedad de ''orden''?


El siguiente código plug-and-play funciona perfectamente desde Django 1.7 . Todo lo que tiene que hacer es copiar el siguiente código en el archivo __init__.py de la aplicación específica y cambiar el parámetro VERBOSE_APP_NAME .

from os import path from django.apps import AppConfig VERBOSE_APP_NAME = "YOUR VERBOSE APP NAME HERE" def get_current_app_name(file): return path.dirname(file).replace(''//', ''/'').split(''/'')[-1] class AppVerboseNameConfig(AppConfig): name = get_current_app_name(__file__) verbose_name = VERBOSE_APP_NAME default_app_config = get_current_app_name(__file__) + ''.__init__.AppVerboseNameConfig''

Si usa esto para varias aplicaciones, debe factorizar la función get_current_app_name en un archivo auxiliar.



Hay un truco que se puede hacer que no requiere migraciones. Tomado del blog de Ionel y el crédito va para él: http://blog.ionelmc.ro/2011/06/24/custom-app-names-in-the-django-admin/

También hay un boleto para esto que debería arreglarse en Django 1.7 https://code.djangoproject.com/ticket/3591

"" "

Supongamos que tiene un modelo como este:

class Stuff(models.Model): class Meta: verbose_name = u''The stuff'' verbose_name_plural = u''The bunch of stuff''

Tiene verbose_name, sin embargo, también desea personalizar app_label para que se muestre de forma diferente en admin. Desafortunadamente tener alguna cadena arbitraria (con espacios) no funciona y no es para mostrar de todos modos.

Resulta que el administrador usa app_label. title () para mostrar para que podamos hacer una pequeña hack: str subclass con el método de título reemplazado:

class string_with_title(str): def __new__(cls, value, title): instance = str.__new__(cls, value) instance._title = title return instance def title(self): return self._title __copy__ = lambda self: self __deepcopy__ = lambda self, memodict: self

Ahora podemos tener el modelo así:

class Stuff(models.Model): class Meta: app_label = string_with_title("stuffapp", "The stuff box") # ''stuffapp'' is the name of the django app verbose_name = ''The stuff'' verbose_name_plural = ''The bunch of stuff''

y el administrador mostrará "The stuff box" como el nombre de la aplicación.

"" "


No, pero puedes copiar la plantilla de administrador y definir el nombre de la aplicación allí.


Para Django 1.4 (aún no lanzado, pero el tronco es bastante estable), puede usar el siguiente método. Se basa en el hecho de que AdminSite ahora devuelve una TemplateResponse, que puede modificar antes de que se represente.

Aquí, hacemos un poco de parche de mono para insertar nuestro comportamiento, lo cual se puede evitar si usa una subclase de AdminSite personalizada.

from functools import wraps def rename_app_list(func): m = {''Sites'': ''Web sites'', ''Your_app_label'': ''Nicer app label'', } @wraps(func) def _wrapper(*args, **kwargs): response = func(*args, **kwargs) app_list = response.context_data.get(''app_list'') if app_list is not None: for a in app_list: name = a[''name''] a[''name''] = m.get(name, name) title = response.context_data.get(''title'') if title is not None: app_label = title.split('' '')[0] if app_label in m: response.context_data[''title''] = "%s administration" % m[app_label] return response return _wrapper admin.site.__class__.index = rename_app_list(admin.site.__class__.index) admin.site.__class__.app_index = rename_app_list(admin.site.__class__.app_index)

Esto arregla el índice y las vistas de app_index. No arregla las migas de pan en todas las demás vistas de administrador.


Primero necesitas crear un archivo apps.py como este en tu carpeta de aplicaciones:

# appName/apps.py # -*- coding: utf-8 -*- from django.apps import AppConfig class AppNameConfig(AppConfig): name = ''appName'' verbose_name = "app Custom Name"

Para cargar esta subclase AppConfig de forma predeterminada:

# appName/__init__.py default_app_config = ''appName.apps.AppNameConfig''

Es la mejor manera de hacerlo probado en Django 1.7

Para la persona que tuvo problemas con el español

Este código habilita la compatibilidad con utf-8 en scripts python2

# -*- coding: utf-8 -*-


Según lo declarado por el comentario de rhunwicks a OP, ahora esto es posible de forma inmediata ya que Django 1.7

Tomado de los docs.djangoproject.com/en/1.7/ref/applications/… :

# in yourapp/apps.py from django.apps import AppConfig class YourAppConfig(AppConfig): name = ''yourapp'' verbose_name = ''Fancy Title''

luego establezca la variable default_app_config en YourAppConfig

# in yourapp/__init__.py default_app_config = ''yourapp.apps.YourAppConfig''


Si tiene más de un modelo en la aplicación, solo cree un modelo con la información Meta y cree subclases de esa clase para todos sus modelos.

class MyAppModel(models.Model): class Meta: app_label = ''My App Label'' abstract = True class Category(MyAppModel): name = models.CharField(max_length=50)


Si ya tiene tablas existentes que usan el nombre de la aplicación anterior y no desea migrarlas, simplemente configure app_label en un proxy del modelo original.

class MyOldModel(models.Model): pass class MyNewModel(MyOldModel): class Meta: proxy = True app_label = ''New APP name'' verbose_name = MyOldModel._meta.verbose_name

Entonces solo tienes que cambiar esto en tu admin.py:

#admin.site.register(MyOldModel, MyOldModelAdmin) admin.site.register(MyNewModel, MyOldModelAdmin)

Tenga en cuenta que la URL será / admin / NewAPPname / mynewmodel / por lo que es posible que desee asegurarse de que el nombre de clase para el nuevo modelo se ve lo más parecido posible al modelo anterior.


Antes de Django 1.7

Puede darle a su aplicación un nombre personalizado definiendo etiqueta de aplicación en la definición de su modelo. Pero a medida que django construye la página de administración, cambiará los modelos por su etiqueta_aplicación, por lo que si desea que aparezcan en una aplicación, debe definir este nombre en todos los modelos de su aplicación.

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

Django 1.7+

Según lo declarado por el comentario de rhunwicks a OP, ahora esto es posible de forma inmediata ya que Django 1.7

Tomado de los docs.djangoproject.com/en/1.7/ref/applications/… :

# in yourapp/apps.py from django.apps import AppConfig class YourAppConfig(AppConfig): name = ''yourapp'' verbose_name = ''Fancy Title''

luego establezca la variable default_app_config en YourAppConfig

# in yourapp/__init__.py default_app_config = ''yourapp.apps.YourAppConfig''