Quitar "Add" o "+" dentro de Admin

53 views
Skip to first unread message

cesar

unread,
Jan 28, 2011, 5:21:08 PM1/28/11
to Django-es
Hola gente!
Como puedo hacer para que dentro del admin, si estoy creando un objeto
A y este tiene una Foreignkey a otro B..no me deje crear alli un
objeto B?, es decir que no me aparezca al lado del combo de objetos B
el simbolo "+" o sea para crear.

ej. Supongamos que tengo un modelo como el siguiente

class B(models.Model):
descripcion : models.CharField(max_length=100)

class A(models.Model):
b = models.ForeignKey(B)

Como hago para que si estoy creando objetos A no me muestre "+" o
"Add" para objetos B. Quiero que los objetos B se creen antes de ir a
crear los objetos A.

zodman

unread,
Jan 28, 2011, 9:49:23 PM1/28/11
to djan...@googlegroups.com
puedes hacerlo por permisos, osea definir al usuario que no tenga
permisos para agregar otro modelo ...


O creas un javascript y remueves la (+) con un $.remove()

2011/1/28 cesar <cesarluis...@gmail.com>:

> --
> Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
>  Si quieres publicar en este grupo, envía un mensaje de correo
> electrónico a djan...@googlegroups.com
>  Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
>  Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.

--
Andres Vargas
www.zodman.com.mx

Jairo Peralta

unread,
Jan 28, 2011, 7:51:11 PM1/28/11
to djan...@googlegroups.com
Hola Cesar,
para que el Objeto A no pueda acceder al Objeto B lo que tienes que hacer es no registrar el Objeto B en el admin. Si ademas de este comportamiento deseas tener el Objeto B en el admin lo puedes hacer a mano en tu template o también puedes usar admin.site.register y admin.site.unregister de la manera mas conveniente.

Un saludo.



2011/1/28 cesar <cesarluis...@gmail.com>

msaelices

unread,
Feb 4, 2011, 4:37:26 AM2/4/11
to Django-es
On 28 ene, 23:21, cesar <cesarluis.ville...@gmail.com> wrote:
> Hola gente!
> Como puedo hacer para que dentro del admin, si estoy creando un objeto
> A y este tiene una Foreignkey a otro B..no me deje crear alli un
> objeto B?, es decir que no me aparezca al lado del combo de objetos B
> el simbolo "+" o sea para crear.

Nosotros para Merengue CMS lo hicimos creando un widget
RelatedFieldWidgetWrapperWithoutAdding, que en realidad es un wrapper
a otro widget, pero sin incluirle la capa javascript, que Django por
defecto incluye en su widget [1]:

http://dev.merengueproject.org/browser/trunk/merengueproj/merengue/base/widgets.py#L178

La utilización de dicho widget se incluye en el modeladmin, como se
puede ver aquí:

http://dev.merengueproject.org/changeset/2580


Un saludo.

[1] http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/widgets.py#L200

MiguelVel

unread,
Feb 7, 2011, 4:48:26 PM2/7/11
to Django-es
lo que puedes hacer es utilizar la clase ModelForm para sobrescribir
los formularios de un modelo asi mira:

from django import forms
from django.contrib import admin

#creas la clase con el formulario que sobrescribira el por defecto
class AModelForm(forms.ModelForm):
b = forms.ModelChoiceField(queryset = B.objects.all(),
widget=forms.Select(), required = True)

class Meta:
model = A

#agregas el ModelForm a tu clase ModelAdmin y luego la registras
class AAdmin(admin.ModelAdmin):
form = AModelForm

admin.site.register(A, AAdmin)

pruebas y listo.
Reply all
Reply to author
Forward
0 new messages