Dado un modelo llamado MainModel
y una RelatedModel
, donde el último, tiene una ForeignKey
campo para MainModel
:Cómo mostrar diferentes inlines dependiendo del valor actual campo de objeto
class MainModel(models.Model):
name = models.CharField(max_length=50)
type = models.BooleanField()
class RelatedModel1(models.Model):
main = models.ForeingKey(MainModel):
name = models.CharField(max_length=50)
class RelatedModel2(models.Model):
main = models.ForeingKey(MainModel):
name = models.CharField(max_length=50)
y la ModelAdmin correspondiente clases:
class RelatedModel1InlineAdmin(admin.TabularInline):
model = RelatedModel1
class RelatedModel2InlineAdmin(admin.TabularInline):
model = RelatedModel2
class MainModel(admin.ModelAdmin):
inlines = [RelatedModel1, RelatedModel2]
Y ese es el comportamiento predeterminado, se obtienen dos líneas, una para cada modelo relacionado. La cuestión es cómo ocultar completamente todas las inlines cuando se crea la instancia MainModel
(el ModelAdmin
's add_view
), y para mostrar los inline para RelatedModel1
cuando el campo de la MainModel
ejemplo type
es True
, y mostrar los inline para RelatedModel2
cuando False
.
Iba a crear un descriptor para el atributo ModelAdmin.inline_instances
, pero me di cuenta de que necesitaba acceso a la instancia del objeto que se estaba editando, pero se pasa como parámetros.
¿Algún ayuda?
Gracias!
lo necesitaba algún tiempo atrás .. nunca encontró la respuesta, buena pregunta! – juliomalegria