Ich habe erst heute angefangen, mit Django zu spielen und finde es bisher ziemlich schwierig, einfache Dinge zu tun. Womit ich im Moment kämpfe, ist das Filtern einer Liste von Statustypen. Das StatusTypes Modell ist:
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'
Auf einer Verwaltungsseite benötige ich alle Ergebnisse mit Typ = 0 und auf einer anderen Seite alle Ergebnisse mit Typ = 1, so dass ich sie nicht einfach aus dem Modell heraus einschränken kann. Wie würde ich vorgehen, um dies zu tun?
EDITAR: Ich hätte mich etwas deutlicher ausdrücken sollen. Ich habe ein Modell "Unit", das einen Fremdschlüssel zu StatusTypes hat. Die Modelle sind wie folgt:
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'
So jetzt in der Admin-Seite für die Einheit Modell möchte ich den Status auf nur diejenigen mit Typ = 1 zu begrenzen. Basierend auf lazerscience Antwort unten habe ich versucht, den folgenden Code:
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)
Aber das Auswahlfeld hat sich dadurch nicht verändert. Ich habe auch versucht, den Wert von qs zu drucken und nichts wurde auf meinem Terminal ausgegeben, also frage ich mich, ob ich irgendwie queryset aufrufen muss?
EDIT 2: Es war vielleicht nicht klar, dass ich dies für das Dropdown-Menü "Status" filtern möchte, das sich auf der Seite "Erstellen" für das Modell "Einheit" befindet.