Я только начал играть с Джанго сегодня и до сих пор считаю, что делать простые вещи довольно сложно. Сейчас я борюсь с тем, чтобы отфильтровать список типов состояний. Модель StatusTypes:
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'
На одной странице администратора мне нужны все результаты, где type = 0, а на другой мне нужны все результаты, где type = 1, поэтому я не могу просто ограничить их внутри модели. Как бы я поступил так?
РЕДАКТИРОВАТЬ: Я должен был быть немного более ясным. У меня есть модель "Unit", которая имеет внешний ключ для StatusTypes. Модели следующие:
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'
Так что теперь на странице администратора для модели объекта я хочу ограничить статус только теми, у кого тип = 1. Исходя из приведенного ниже отклика на лазерную науку, я попробовал следующий код:
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)
Но это не изменило поле выбора вообще. Я также попытался напечатать значение qs, и на мой терминал ничего не выводилось, поэтому мне интересно, должен ли я как-то вызывать queryset?
РЕДАКТИРОВАТЬ 2: Возможно, не было ясно, что я хочу отфильтровать это для раскрывающегося списка состояния, который находится на странице создания для модели модуля.