如何修复管理员中的外键修复下拉列表选择? [Django的]

时间:2015-03-20 02:55:15

标签: python django django-admin

我将Django 1.6与admin-sites一起使用。

我已将Hoge模型设置为用户模型的外键。

class Hoge(models.Model):
    user = models.ForeignKey(User, unique=False, verbose_name=u'User')

在管理网页中,它显示了针对外键的用户下拉列表,但是我希望这只显示当前用户。

你能告诉我如何写admin.py吗?

class HogeAdmin(admin.ModelAdmin):
    # something

enter image description here

1 个答案:

答案 0 :(得分:0)

你想要override the formfield_for_foreignkey,如下:

class HogeAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "user":
            kwargs['queryset'] = User.objects.filter(pk=request.user.pk)
            kwargs['initial'] = request.user
        return super(HogeAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)

这只是改变user字段,并将查询集设置为与当前用户(将只是当前用户)具有相同主键(pk)的所有用户,并设置当前用户的初始值。