mysql - Django form performance -


i asked in code review rejected cause of "broken code." why i'm asking here. site more appropriate question code review one.

in app, user can modify course created. 1 field "teacher" field , user can select different person teacher. foreignkey creates 138 duplicated queries , can't figure out how make more efficient.

model:

class coursecatalog(models.model): course_name = models.charfield(verbose_name="course name", max_length=50) course_desc = models.textfield(verbose_name="course description") teacher = models.foreignkey(teacher, blank=true, null=true, verbose_name='course owner', on_delete=models.protect) ... 

view:

class editcoursecatalog(updateview): model = coursecatalog fields = ['course_name','course_desc', 'teacher'] template_name = 'school/course_catalog/new_edit_form.html' 

template:

... <h3>course form</h3> {{ user.teacher }} <form action="" method="post">{% csrf_token %}  {{form|crispy}} ... 

here query debug duplicated 138 times. difference between queries school_familymember.id = 220.

select `school_familymember`.`id`, `school_familymember`.`password`, 

school_familymember.last_login, school_familymember.is_superuser, school_familymember.username, school_familymember.first_name, school_familymember.last_name, school_familymember.email.school_familymember.is_staff, school_familymember.is_active, school_familymember.date_joined, school_familymember.family_id, school_familymember.middle_name, school_familymember.family_member_role_id, school_familymember.address1, school_familymember.address2, school_familymember.city, school_familymember.state, school_familymember.zip_code, school_familymember.notes, school_familymember.gender, school_familymember.phone_number, school_familymember.cell_phone_number school_familymember school_familymember.id = 220

the teacher model foreign key familymember table , think i'm having issue. i'm wondering if there way make 1 single query collect family names , ids , use drop down list in form. can built in form managers or have scrap , create queries in view , pass them form?

class teacher(models.model):     family_member = models.onetoonefield(familymember, verbose_name='name')     notes = models.textfield(blank=true) 

create custom model form, , in __init__ method change teachers queryset use select_related more efficient.

class coursecatalogform(forms.modelform):     class meta:         fields = ['course_name','course_desc', 'teacher']      def __init__(self, *args, **kwargs):         super(coursecatalogform, self).__init__(*args, **kwargs)         self.fields['teacher'].queryset = self.fields['teacher'].queryset.select_related('family_member') 

then use new model form class in view instead of specifying fields.

class editcoursecatalog(updateview):     model = coursecatalog     template_name = 'school/course_catalog/new_edit_form.html'     form_class = coursecatalogform 

Comments

Popular posts from this blog

searchKeyword not working in AngularJS filter -

sequelize.js - Sequelize: sort by enum cases -

user interface - how to replace an ongoing process of image capture from another process call over the same ImageLabel in python's GUI TKinter -