我今天刚开始使用 Django,到目前为止发现做简单的事情相当困难。我现在正在努力解决的是过滤状态类型列表。 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 的所有结果,因此我不能仅在模型内限制它。我该怎么做呢?
EDIT:我应该更清楚一点。我有一个模型“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 的状态。根据下面的 lazerscience 响应,我尝试了以下代码:
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 的值,但没有任何内容输出到我的终端,所以我想知道我是否需要一些如何调用查询集?
EDIT 2:我可能不清楚我想要过滤单元模型创建页面上的状态下拉列表。