向Django管理员内联表单提供额外数据

时间:2018-08-02 15:25:27

标签: python django inline

我有一个模型IpList,其中包含用户组或仅包含简单用户。现在,我想以内联形式显示与用户相关的所有IpList。但是我不知道如何以那些内联形式显示相关组中的所有用户。这是我的模型:

class IpList(models.Model):
  name = models.CharField(max_length=256, unique=True)
  description = models.TextField(blank=True)
  user = models.ManyToManyField(User, blank=True)
  group = models.ManyToManyField(Group, blank=True)

例如,我有1个名为“ MyUser”的用户和1个名为“ MyGroup”的组,其中包含“ MyUser”。现在,我要创建2个IpList:带有“ MyUser”的“ ListOne”和带有“ MyGroup”的“ ListTwo”。

然后,我要进入用户“ MyUser”的内联表单,由于queryset,只有“ ListOne”。因此,问题是:如何扩展查询集或内联表单数据以在其中也显示“ ListTwo”(因为该列表也包含“ MyUser”,但具有组关系)?

我知道,添加/删除组后,我可以使用信号并在change_m2m中创建关系IpList-User,但我不想这样做。

这是我的UserAdmin:

class IpListInline(admin.TabularInline):
  model = IpList.user.through
  extra = 0
  verbose_name = 'IP list'
  verbose_name_plural = 'IP lists'
  fields = ('name', 'description')
  readonly_fields = ('name', 'description')
  can_delete = False

class UserAdmin(BaseUserAdmin):
  add_form = UserAdminAddForm
  list_display = ('username',)
  list_filter = ('is_staff', 'is_superuser', 'is_active',)
  search_fields = ('username', 'first_name', 'last_name')
  inlines = [IpListInline]

提前谢谢!

0 个答案:

没有答案