添加在Django管理筛选器
问题描述:
我有以下的模型 -添加在Django管理筛选器
class NetworkAdministrator (models.Model):
email = models.EmailField()
admin_name = models.CharField(max_length=100, blank=True)
class Network(models.Model):
network = models.CharField(max_length=50)
network_name = models.CharField(max_length=50)
administrators = models.ManyToManyField(NetworkAdministrator)
在管理控制台中,任何网络添加,它显示所有管理员,就好像它是做什么 - NetworkAdministrator.objects.all()
。
我将如何使它所以对于每个特定的网络中,组管理员只包括那些从目前的网络 -
Network.objects.get(network='**network name**').administrators.all()
从功能上说,这是我希望能够到在管理面板中执行:
1) add network = 'China'
2) add 2 administrators to this network = cadmin1, cadmin2, cadmin3
3) add network = 'India'
4) add 2 administrators to this network: iadmin1, iadmin2
(no administrators should show from the China network).
谢谢。
答
class AdministrationInline(admin.TabularInline):
model = Network.administrators.through
class NetworkAdministratorAdmin(admin.TabularInline):
inlines = [
AdministrationInline,
]
class NetworkAdmin(admin.ModelAdmin):
inlines = [
AdministrationInline,
]
exclude = ('administrators',)
admin.site.register(Network, NetworkAdmin)
admin.site.register(NetworkAdministrator, NetworkAdministratorAdmin)
请注意:through
中介模式和'administrators'
手动排除这是一个多对多的关系,而不是一个外键。当试图执行你指定的方法时,我得到一个错误,说'没有ForeignKey到'并且在查看文档链接,TabularInline仅适用于FK。 –
David542
2011-05-30 17:36:52
我的错误。尽管我在文档中找到了一些东西。我更新了链接和示例。 – Maccesch 2011-05-30 18:36:08