如何解决在django admin中添加过滤器
| 我有以下模型-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).
谢谢。
解决方法
使用InlineModelAdmin
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
中介模型和ex6ѭ的手动排除
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。