当根据Unit获得成员时,我只想从中获得那些实际上在中的成员。在django-admin过滤foreignkey时会有额外的限制
我有一个模型看起来像这样:
class Member(models.Model):
name = models.CharField(max_length=256)
unit = models.ManyToManyField(Unit, through='Membership')
class Membership(models.Model):
member = models.ForeignKey(Member)
unit = models.ForeignKey(Unit)
start = models.DateField(default=date.today)
stop = models.DateField(blank=True, null=True)
class Unit(models.Model):
name = models.CharField(max_length=256)
正如你所看到的,会员可以在单元中的“假”的成员,这只是历史,不应该在搜索被认为是和管理员列表。他们应该显示在单个对象的变更页面上。
管理看起来是这样的:
class MembershipInline(admin.TabularInline):
model = Membership
extra = 1
class MemberAdmin(admin.ModelAdmin):
list_filter = ('unit',)
inlines = [MembershipInline,]
所以,我怎么能(如果可能这样),在单元过滤时只有得到这些单位,其membership__stop__isnull=True
?
我试过管理员,我可以让他们在管理员本身的模型上工作,但不是在过滤/搜索。还有一个可覆盖的方法,但我无法用头来解决如何使用它来解决我的问题。
编辑,这是如何使用的:一个成员在一个单元中只有一个成员资格,但是,他们可能是以前的成员,但他们结束(停止)。因此,我只想过滤(并在列表视图中显示)拥有开放式成员资格的成员(例如,他们现在是该单位的成员)。
任何想法?
是的,Django很棒,因为这非常简单。但是我想在管理员中使用这种方法,有没有办法将该代码放入list_filter中?像: 高清unit_without_old(个体经营,UNIT_ID): 单位= member.unit.filter(单位= UNIT_ID).filter(membership__stop__isnull = TRUE) list_filter =( 'unit_without_old',) – 2009-09-28 11:56:05