Jac*_*icz 25 python django admin filter
我想通过外键的属性在管理员更改列表中添加过滤器,例如
class Address(model.Models):
street = models.CharField(max_length=25)
city = models.CharField(max_length=25)
country = models.CharField(max_length=25)
class Customer(models.Model):
name = models.CharField(max_length=25)
address = models.ForeignKey(Address)
Run Code Online (Sandbox Code Playgroud)
假设在客户管理员更改列表中,我想按城市和国家/地区显示过滤器(因此,请向我显示特定国家/地区或城市的所有客户).
但标准的list_filter()功能似乎只允许直接在模型上按字段过滤,而不允许在任何外键上过滤.我试过了:
list_filter = ("address__country",)
Run Code Online (Sandbox Code Playgroud)
要么
list_filter = ("address.country",)
Run Code Online (Sandbox Code Playgroud)
但我总是得到相同类型的错误:
'address__country' is not a callable or an attribute
Run Code Online (Sandbox Code Playgroud)
欢迎大家提出意见.是否有一些特殊的命名约定/语法允许过滤FK属性?
luc*_*luc 20
请参阅https://code.djangoproject.com/ticket/3400.它在django 1.3中运行正常:)
class Room(models.Model):
house = models.ForeignKey(House)
def __unicode__(self):
return self.house.town.name
class Booking(models.Model):
room = models.ForeignKey(Room)
def __unicode__(self):
return self.room.house.town.name
class BookingOpts(admin.ModelAdmin):
list_filter = ('room__house__town',)
raw_id_admin = ('room', )
admin.site.register(Town)
admin.site.register(House)
admin.site.register(Room)
admin.site.register(Booking, BookingOpts)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19885 次 |
| 最近记录: |