urls registered not noreversematch namespace from exceptions adopcion python django django-admin generics formset

python - registered - Django: no permitir can_delete en GenericStackedInline



from django urls import noreversematch (2)

Tal vez es una función post ''09, pero puede especificar eso sin anular el __init__() :

class StupidCarOptionsInline(admin.StackedInline): model = models.StupidOption form = StupidCarOptionAdminForm extra = 0 can_delete = False

Construí este modelo que contiene una clave externa genérica:

class MyModel(models.Model): content_type = models.ForeignKey(ContentType, verbose_name=_(''content type'')) object_id = models.PositiveIntegerField(_(''object id'')) content_object = generic.GenericForeignKey(''content_type'', ''object_id'')

Luego hice un genérico en línea para ponerlo en cualquier clase de ModelAmin:

class MyModelStackedInline(generic.GenericStackedInline): model = MyModel formset = generic.generic_inlineformset_factory(MyModel, can_delete=False) extra = 0 class SomeOhterModelAdmin(admin.ModelAdmin): inlines = [MyModelStackedInline]

Sin embargo, a pesar de can_ delete=False arg pasado por generic_inlineformset_factory, siempre veo una casilla de verificación Delete en mi administrador change_form.

Aquí hay un ejemplo: http://img8.imageshack.us/img8/3323/screenshotbe.png

¿Sabes cómo eliminar esta casilla de verificación?

Gracias :)


Actualización 2016: según la respuesta de Stan a continuación, las versiones modernas de django le permiten establecer can_delete = True en la subclase GenericStackedInline , ya que hereda de InlineModelAdmin

Me he encontrado con esto antes - por alguna razón, pasar can_delete como un argumento no funciona, pero si lo hace en el método init del formset. Prueba esto:

class MyInlineFormset(generic.generic_inlineformset_factory(MyModel)): def __init__(self, *args, **kwargs): super(MyInlineFormset, self).__init__(*args, **kwargs) self.can_delete = False

luego en tu clase en línea admin:

class MyModelStackedInline(generic.GenericStackedInline): model = MyModel formset = MyInlineFormset extra = 0