Django admin:在 search_fields 中使用一对一的关系

Posted

技术标签:

【中文标题】Django admin:在 search_fields 中使用一对一的关系【英文标题】:Django admin: use one-to-one relationship in search_fields 【发布时间】:2013-04-12 21:56:03 【问题描述】:

我正在尝试使用以下 Model 和 ModelAdmin 类向我的模型管理列表页面添加搜索:

models.py

from django.contrib.auth.models import User

class UserProfile(models.Model):
        user = models.OneToOneField(User)
        country = CountryField(blank=True, null=True)

admin.py

from django.contrib import admin
from models import UserProfile

class UserProfileAdmin(admin.ModelAdmin):
        list_display = ('user','country')
        search_fields = ['user']

但我在尝试访问管理面板中的 UserProfile 时收到以下错误:

 at /admin/profiles/userprofile/ Related Field has invalid
 lookup: icontains

我还尝试了以下方法:

search_fields = ['user_username']

还有

search_fields = ['user_name']
    def user_name(self,obj):
        return obj.user.username

有什么解决办法吗?

【问题讨论】:

【参考方案1】:

尝试使用user__username,根据lookup API “follow” notation。

【讨论】:

以上是关于Django admin:在 search_fields 中使用一对一的关系的主要内容,如果未能解决你的问题,请参考以下文章

Django Admin Cookbook-8如何在Django admin中优化查询

django1.6 admin不能登录

django-admin小试

django的admin界面怎么没有样式

Django Admin Cookbook-23如何在Django admin中添加嵌套的内联

Django admin后台操作