【问题标题】:how to limit the foreignkey dropdown with constraints?如何使用约束限制外键下拉列表?
【发布时间】:2011-03-05 02:38:05
【问题描述】:

我有一个数据库,用于跟踪两个不同团队之间的交互(在管理界面中由两个不同的组表示)。对于某些字段,我有一个用户数据库的外键,我想将下拉人员限制为仅特定组。

如果有人有任何建议,将不胜感激!

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    您可以更改表单字段的底层查询集:How do I filter ForeignKey choices in a Django ModelForm?

    【讨论】:

    • 似乎说应该在视图中完成,但我不确定如何访问视图,我唯一可以访问的是模型类和模型管理类。任何特定的方向性建议将不胜感激!
    • 您应该使用自定义表单并在表单的__init__ 中执行此操作! def __init__(self, *args, **kwargs): super(MyForm, self).__init__(*args, **kwargs) self.fields["user"].queryset = User.objects.filter(...)
    【解决方案2】:

    要覆盖 Django 管理应用程序中外键字段的选择,请编写 formfield_for_foreignkey 方法。

    【讨论】:

    【解决方案3】:

    您正在寻找limit_choices_to

    【讨论】:

    • 您好,感谢您的回答!但是,我认为用户组关系位于 django admin 中的不同表上,在这种情况下我将如何过滤?
    • 带有Q 对象。 Q(group__icontains=u'user')
    • 嘿伊格纳西奥,我仍然对如何做到这一点感到困惑。在进一步挖掘 auth 模块的代码后,我发现组在 User 类中定义如下:groups = models.ManyToManyField(Group, verbose_name=_('groups'), blank=True,)。该查询基于用户,所以我想检查当前有问题的用户是否在“合法”组中。请注意,Group 模型有一个 ID,因此名称不直接存储在 User 中。非常感谢您的帮助!
    • ForeignKey(User, limit_choices_to={'groups__name': u'Legal'}, ...)
    • 如果我希望它不是基于常量而是基于另一个模型字段进行过滤怎么办?含义:如果我想访问这个 Q 对象中的“自我”怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 2011-07-24
    • 2011-05-30
    • 2020-12-19
    • 2011-06-09
    相关资源
    最近更新 更多