刷新后,django模板中dictsort()的页面结果将更改
模型的结构是:我正在使用hvad进行多语言测试刷新后,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
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')