在提取foreignkey项时,覆盖def queryset不起作用?

时间:2011-11-20 13:29:39

标签: django django-models django-admin django-manage.py

我有一个这样的模式

class StudentAdmin(admin.ModelAdmin):
    date_hierarchy = 'dob'

    def queryset(self, request):
        queryset = Student.objects.filter(created_by=request.user)
        return queryset

class ClassroomAdmin(admin.ModelAdmin):
    list_display = ('name',)
    ordering = ('name',)

    def queryset(self, request):
        queryset = Classroom.objects.filter(created_by=request.user)
        return queryset

正如您所看到的,我只想要学生教室,这些已经由登录用户创建。在更改列表页面上,此查询似乎正常工作。如果我没有创建教室,那么我就看不到它们了。

no classrooms

但是当我转到'添加新的'表单(例如,对于学生对象)时,即使登录的用户尚未创建,您也会看到表单上列出的所有教室它们(此列表对于此用户应为空,因为class1是由其他人创建的)(Classroom是学生的FK)。

classrooms

我错过了什么?

1 个答案:

答案 0 :(得分:0)

用于限制外键的查询集,请查看formfield_for_foreignkey