Acabo de empezar a jugar con Django hoy y hasta ahora me resulta bastante difícil hacer cosas simples. Lo que estoy luchando ahora es filtrar una lista de tipos de estado. El modelo es StatusTypes:Filtrando los resultados del modelo para el cuadro de selección de administración de Django
class StatusTypes(models.Model):
status = models.CharField(max_length=50)
type = models.IntegerField()
def __unicode__(self):
return self.status
class Meta:
db_table = u'status_types'
En una página de administración que necesito todos los resultados, donde type = 0 y en otro Voy a necesitar todos los resultados, donde type = 1 por lo que puede limitar no sólo desde dentro de la modelo. ¿Cómo voy a hacer esto?
EDIT: Debería haber sido un poco más claro. Tengo un modelo de "Unidad" que tiene una clave externa para StatusTypes. Los modelos son los siguientes:
class StatusTypes(models.Model):
status = models.CharField(max_length=50)
type = models.IntegerField()
def __unicode__(self):
return self.status
class Meta:
db_table = u'status_types'
class Unit(models.Model):
name = models.CharField(unique=True, max_length=50)
status = models.ForeignKey(StatusTypes, db_column='status')
note = models.TextField()
date_added = models.DateTimeField()
def __unicode__(self):
return self.name
class Meta:
db_table = u'units'
Así que ahora en la página de administración para el modelo de la unidad Quiero limitar el estado de sólo aquellos con type = 1. Sobre la base de la respuesta fuera lazerscience continuación probé el siguiente código:
from inv.inventory.models import Unit
from django.contrib import admin
class UnitAdmin(admin.ModelAdmin):
def queryset(self, request):
qs = super(UnitAdmin, self).queryset(request)
return qs.filter(type=0)
admin.site.register(Unit, UnitAdmin)
Pero, no cambió la casilla de selección en absoluto. También traté de imprimir el valor de qs y no se envió nada a mi terminal, así que me pregunto si tengo alguna forma de invocar queryset.
EDIT 2: Es posible que no esté claro que quiero filtrar esto para el menú desplegable de estado que está en la página de creación para el modelo de la Unidad.
Gracias por la respuesta.List_filter no funcionará porque no puede tener una unidad con un estado de tipo = 0 y, a menos que esté equivocado, list_filter simplemente agrega una barra lateral que le da al usuario la opción. Estoy un poco sorprendido de que esto sea tan difícil de hacer ... al menos aún no he podido encontrar una respuesta. Todo lo que quiero hacer es agregar 'DONDE parte = 1' a la consulta. – blcArmadillo
Tal vez estoy perdiendo el sentido de lo que quiere, pero si agrega 'status' a la lista' list_filter', le dará un widget que le permite filtrar en función de los valores permitidos para ese campo. Funciona al agregar un parámetro get a la URL del administrador, exactamente como lo que necesita. –
Gabriel, me acabo de dar cuenta de lo que podría ser la confusión. Quiero filtrar los tipos de estado para el campo de selección de estado en la página agregar. No agregue una columna de filtro a la lista de Unidades que ya se han agregado. ¿Esto ayuda a aclarar las cosas? – blcArmadillo