减少Django modelform中的重复查询

2024-04-19 16:17:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个modelform在基于函数的视图中创建模型实例。 当create view呈现表单模板时,它运行6个查询,我想减少这些查询。 有什么方法可以降低qs或提高model create视图的性能吗?你知道吗

型号.py

class Teacher(models.Model):
    name = models.CharField(max_length=150)
    photo = models.ImageField(upload_to='teachers',
                              default='teacheravatar.jpg')
    date_of_birth = models.DateField(blank=True, null=True)
    designation = models.ForeignKey(Designation, on_delete=models.CASCADE)
    expertise = models.ManyToManyField(
        to=Topic, blank=True, related_name='expert_in')
    mobile = models.CharField(max_length=11, blank=True, null=True)
    email = models.CharField(max_length=255, blank=True, null=True)
    joining_date = models.DateField(auto_now=True)

    class Meta:
        ordering = ['joining_date', 'name']

*表单.py*

class TeacherForm(ModelForm):
    class Meta:
        model = Teacher
        fields = ['name', 'photo', 'date_of_birth',
                  'designation', 'expertise',
                  'mobile', 'email', ]

*视图.py*

# THIS VIEW DUPLICATES QUEREIS
# AND RUNS 6 QUERIES
@login_required
def add_teacher_view(request):
    """
    :param request:
    :return: teacher add form
    """
    if request.method == 'POST':
        form = TeacherForm(request.POST)
        if form.is_valid():
            form.save()
            pk = form.instance.pk
            return redirect('teachers:teacher_details', pk=pk)
    form = TeacherForm()
    context = {'form': form}
    return render(request, 'teachers/add_teacher.html', context)


Tags: namepyform视图truedatemodelsrequest