Я хочу получить имя класса ученика и сопоставить его с предметом, а затем отфильтровать его предмет в разделе администрирования 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']