【问题标题】:admin search for generic foreign key django管理员搜索通用外键 django
【发布时间】:2015-08-03 05:32:03
【问题描述】:

我正在尝试在存在通用外键的模型上进行管理员搜索。

admin.py

class privacySettingsAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {
            'fields': (
                'field_name',
                'level',

            )
        }),
        (('page/article'), {
            'classes': ('grp-collapse grp-open',),
            'fields': ('content_type', 'object_id', )
        }),
    )
    autocomplete_lookup_fields = {
        'generic': [['content_type', 'object_id']],
    }
    search_fields = ('object_id',)

我可以使用object_id 进行搜索。但我想使用 object_id 对象的字段进行搜索。

例如。用户有一个外键来建模。然后我想使用usernamefirst_nameemaillast_name 搜索该用户的隐私设置。

提前致谢。

【问题讨论】:

  • 请展示你的模型......

标签: python django generic-foreign-key


【解决方案1】:

试试下面的代码:

在models.py中:

class PrivacySettings(models.Model):
    ...
    def object_username(self):
        return self.object.username
    object_username = property(object_username)

    def object_first_name(self):
        return self.object.first_name
    object_first_name = property(object_first_name)

    def object_last_name(self):
        return self.object.last_name
    object_last_name = property(object_last_name)

    def object_email(self):
        return self.object.email
    object_email = property(object_email)

在 admin.py 中:

class PrivacySettingsAdmin(admin.ModelAdmin):
    model = PrivacySettings
    fieldsets = (
        (None, {
            'fields': (
                'field_name',
                'level',

            )
        }),
        (('page/article'), {
            'classes': ('grp-collapse grp-open',),
            'fields': ('content_type', 'object_id', )
        }),
    )
    autocomplete_lookup_fields = {
        'generic': [['content_type', 'object_id']],
    }
    search_fields = ('object_id', 'object_username', 'object_first_name',
                     'object_last_name', 'object_email')

【讨论】:

  • 我不知道@property 不适合你,但我在代码中应用了一些更改,特别是我更改了属性定义和实现方法...
  • 使用 'p= property(function)' 也不起作用。不允许我在 search_fields 中使用它。 Django 1.7 在这里。
猜你喜欢
  • 2021-04-17
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多