Django TabularInline Admin: поместите значение экземпляра в formfield_for_foreignkey - PullRequest
0 голосов
/ 21 сентября 2018

Я хочу получить имя класса ученика и сопоставить его с предметом, а затем отфильтровать его предмет в разделе администрирования TabularInline.Я попытался сопоставить StdSubject с экземпляром студента модели администратора.Я знаю всю проблему здесь

kwargs["queryset"] = StdSubject.objects.filter(std_subject_class__std_class_name_N__exact=self.std_name)

и проблему с self.std_name в той строке, которую я хочу сопоставить с именем std_name.Но показал ошибку.Это мой код.

class MarksSubjectInstanceInline(admin.TabularInline):
    model = Marks

    fk_name = 'std_name'

    extra = 2
    exclude = ['subject_gradepoint', 'subject_gpa','subject_gpa_sub', 'subject_marks', 'subject_total_marks']

    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "subject_name":
            kwargs["queryset"] = StdSubject.objects.filter(std_subject_class__std_class_name_N__exact=self.std_name)
        return super().formfield_for_foreignkey(db_field, request, **kwargs)



@admin.register(StudentInfo)
class StudentAdmin(admin.ModelAdmin):

    search_fields = ('std_name','std_roll','std_group')
    list_filter = ('std_class', 'std_gender', 'std_group',)
    list_display = ('std_name', 'std_class', 'std_group', 'std_gender', 'std_roll')
    inlines = [MarksSubjectInstanceInline]

    exclude = ['std_total_marks', 'std_gpa','std_grade_point_total_sum','std_marks_with_fail_sub', 'std_grade_point_total_subject_avg', 'std_fail_subject','school_rank','class_rank']
...