StudE-Backend/stude/student_status/admin.py

48 lines
1.7 KiB
Python
Raw Normal View History

2023-06-26 22:06:05 +08:00
from django.contrib import admin
from .models import StudentStatus
from leaflet.admin import LeafletGeoAdmin
from django import forms
from subjects.models import SubjectInstance, Subject
from accounts.models import CustomUser
class CustomStudentStatusForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CustomStudentStatusForm, self).__init__(*args, **kwargs)
if self.instance:
studentstatus = StudentStatus.objects.filter(
user=self.instance.user).first()
user = CustomUser.objects.filter(
id=studentstatus.user.id).first()
subject_instances = SubjectInstance.objects.filter(
course=user.course)
# Get the names of the SubjectInstance objects
subject_instance_names = subject_instances.values_list(
'subject', flat=True)
# Filter the Subject objects by these names
subjects = Subject.objects.filter(name__in=subject_instance_names)
self.fields['subject'].queryset = subjects
subject = forms.ModelChoiceField(
queryset=Subject.objects.none(), required=False)
class Meta:
model = StudentStatus
fields = '__all__'
2023-06-26 22:06:05 +08:00
class StudentStatusAdmin(LeafletGeoAdmin):
model = StudentStatus
form = CustomStudentStatusForm
# define which fields are required
def get_form(self, request, obj=None, **kwargs):
form = super(StudentStatusAdmin, self).get_form(request, obj, **kwargs)
form.base_fields['landmark'].required = False
return form
# Register the new StudentStatus model
admin.site.register(StudentStatus, StudentStatusAdmin)