【问题标题】:Django 1.11 admin form add search box to oneToOne fieldDjango 1.11 管理表单将搜索框添加到 oneToOne 字段
【发布时间】:2018-01-30 05:12:45
【问题描述】:

我有一个用户、管理员和员工模型,员工和管理员都与具有 oneToOne 字段的用户模型相关我想做的是在管理员表单中我有一个字段“用户”

而不是一个包含所有用户的下拉字段,我想要一个搜索框,这样当我搜索特定用户时,我会找到他并选择他作为管理员。

怎么样?
我也尝试将用户的字段添加到管理员的表单中,但我不能
我尝试了内联的东西,管理员模型中的 parent_link ......但我找不到解决方案
现在我想通过在字段中添加一个搜索框来最小化通过长用户列表的搜索

【问题讨论】:

    标签: django python-3.x django-admin django-1.11


    【解决方案1】:

    我已经使用django-ajax-selects 包解决了这类问题。希望这会帮助你。

    app/admin.py:

    from ajax_select import register, LookupChannel
    
    @register('users')
    class UsersLookup(LookupChannel):
    
        model = User
    
        def get_query(self, q, request):
              return self.model.objects.filter(username__icontains=q)
    
    class EmployeeAdminForm(forms.ModelForm):
        user = AutoCompleteSelectField('users', required=False, 
                                      help_text=None)
    
        class Meta:
             model = Employee
             fields = '__all__'
    

    settings.py

    AJAX_LOOKUP_CHANNELS = {
        'users'  : {'model': 'auth.user', 'search_field': 'username'},
    }
    

    【讨论】:

    • 感谢您的回答,但我得到“找不到 'ajax_lookup' 的反向。'ajax_lookup' 不是有效的视图函数或模式名称。”????
    • 您必须在您的 urls.py 中添加 'url(r'^ajax_select/', include(ajax_select_urls)),' 检查安装页面。 :)
    • 如果你可以检查这个stackoverflow.com/questions/45786983/…
    【解决方案2】:

    使用 django 的 raw_id_fields。有了它,您可以声明一个外键对象可搜索。

    【讨论】:

    • 如何通过用户名而不是id进行搜索?
    猜你喜欢
    • 1970-01-01
    • 2014-08-05
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    相关资源
    最近更新 更多