Tengo una duda muy parecida respecto a este
tema , pero no he podido resolver mi problema , tengo 3 modelos :
Código:
class Serie(models.Model):
nombre=models.CharField("Nombre de la Serie",max_length=100,unique=True)
#Otros campos
def __str__(self):
return self.nombre
class Temporada(models.Model):
serie=models.ForeignKey(Serie, verbose_name="Selecciona Una Serie")
nombre=models.CharField("Nombre de la Temporada",max_length=100)
#Otros campos
def __str__(self):
return self.nombre
class Capitulo_Serie(models.Model):
serie=models.ForeignKey(Serie, verbose_name="Selecciona Una Serie")
temporada=models.ForeignKey(Temporada, verbose_name="Nombre Temporada")
nombre=models.CharField("Capitulo",max_length=100)
#Otros campos
def __str__(self):
return self.nombre
En el Admin.py
Código:
class temporada_inline(admin.TabularInline):
model=models.Temporada
extra=1
class capitulo_inline(admin.TabularInline):
model=models.Capitulo_Serie
extra=1
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == 'temporada':
kwargs["queryset"] = models.Temporada.objects.filter(serie=request.user)
return super(capitulo_inline, self).formfield_for_foreignkey(db_field, request, **kwargs)
class temporada_admin(admin.ModelAdmin):
inlines=[
temporada_inline,
capitulo_inline,
]
admin.site.register(models.Serie,temporada_admin)
Lo que necesito es que filtre en capitulo_serie solo las temporadas correspondientes a la serie que tengo abierta en ese momento , por ejemplo tengo esto:
serie1
- temporada1-serie1
- temporada2-serie1
- temporada3-serie1
serie2
- temporada1-serie2
- temporada2-serie2
- temporada3-serie2
y voy a modificar en el admin a serie1 , en el select temporada (que es un foreingkey a el model Temporada) de capitulo_serie , que me cargue solamente las temporadas de serie1 , lo intente hacer de esta manera:
Código:
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == 'temporada':
kwargs["queryset"] = models.Temporada.objects.filter(serie=request.user)
return super(capitulo_inline, self).formfield_for_foreignkey(db_field, request, **kwargs)
pero me carga siempre las temporadas de Serie1 , asi me valla a modificara serie2 me carga las temporadas de serie1 :
probe cambiando el valor de esta linea por
Código:
kwargs["queryset"] = models.Temporada.objects.filter(serie=2)#el id de la serie
Funciona pero la idea no es poner el id manualmente , sino que identifique que serie tengo abierta y tome ese id.
La verdad no exactamente k deberia de colocar para que me filtre las temporadas dependiendo de la serie , ya he visto temas similares pero aun no le he podido resolver