刷新后,django模板中dictsort()的页面结果将更改

刷新后,django模板中dictsort()的页面结果将更改,django,django-templates,django-template-filters,django-hvad,Django,Django Templates,Django Template Filters,Django Hvad,模型的结构是:我正在使用hvad进行多语言测试 class Course(TranslatableModel): translations = TranslatedFields( domain = models.ForeignKey('domain.Domain'), #track = models.ForeignKey('track.Track'), track = models.ForeignKey('track.Track', bl

模型的结构是:我正在使用hvad进行多语言测试

class Course(TranslatableModel):

    translations = TranslatedFields(
        domain = models.ForeignKey('domain.Domain'),
        #track = models.ForeignKey('track.Track'),
        track = models.ForeignKey('track.Track', blank=True, null=True),
        course_nm = models.CharField(max_length=100, verbose_name =_('Course Name')),
        nature_of_training = models.TextField(verbose_name = _('Nature of Training')),
        duration = models.PositiveIntegerField(verbose_name =_('Duration')),
        sem = models.PositiveIntegerField(verbose_name =_('Semester')),
        degree_level = models.CharField(max_length=100, verbose_name =_('Degree Level')),
        credit = models.PositiveIntegerField(verbose_name =_('Credits')),
        locations = models.CharField(max_length=100, verbose_name =_('Locations')),
        accessible = models.CharField(max_length=100, verbose_name =_('Accessible')),
        des = models.TextField(verbose_name = _('Description')),
        admission_details = models.TextField(verbose_name = _('Admission Details')),
        further_study_details = models.TextField(verbose_name = _('Further Study Details')),
        seats = models.PositiveIntegerField(verbose_name =_('Seats')),
        title = models.CharField(max_length=512, verbose_name=_('Title')),
        slug = models.SlugField(max_length=512, verbose_name=_('Slug')),
        created_date = models.DateTimeField(auto_now_add=True, blank=True, null=True),
        updated_date = models.DateTimeField(auto_now=True, blank=True, null=True),
        created_by = models.ForeignKey(User, blank=True, null=True, editable=False),



    )
将上下文中的对象从视图传递到模板以进行排序

在views.py中,我只是在上下文中传递对象

def get_context_data(self, **kwargs):

     context = super(DegreeDetailView, self).get_context_data(**kwargs)

     context['courses'] = Course.objects.all()

return context
模板中

                 {% for c in courses|dictsort:"track" %}

                    {% if c.domain|stringformat:"s" == d.domain_nm %}

                        {% if c.track != None %}
                            <h3>{{ c.track }}</h3>
                        {% endif %}

                      {{ c.course_nm }}

                    {% endif %}

                {% endfor %}
但每次刷新页面后,结果都会发生更改

所以我应该在django模板中进行排序,或者在django模板中进行排序的任何替代方法 我尝试了很多,但没有找到解决办法


提前谢谢

我认为,之所以会得到不同的结果,是因为轨迹可以为空:

因此,田径场设置为空的球场将没有精确的顺序,因此它们将在随机位置渲染。因此,您需要将所有跟踪字段设置为某个值,并可能删除blank=True、null=True+应用迁移,或者按另一个字段排序

另外,在模板中使用dictsort对模型进行排序并不是最好的方法。最好在数据库级别执行,向您提供order_by查询集:

context['courses'] = Course.objects.all().order_by('track__id')

显示视图的代码,该代码生成template@stalk在视图中,只需传递对象上下文['courses']=Course.objects.all返回context当我按“track\u id”在view.py order\u中应用时,如果要从未翻译的模型访问诸如“track”之类的翻译字段,出现以下错误,则必须使用翻译感知管理器,您可以使用nani.utils.get\u translation\u aware\u manager获取一个
context['courses'] = Course.objects.all().order_by('track__id')