首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django-Countries:翻译选择中的错误排序(但在管理中有效)

Django-Countries:翻译选择中的错误排序(但在管理中有效)
EN

Stack Overflow用户
提问于 2014-09-02 14:38:13
回答 2查看 463关注 0票数 1

我使用Django国家,如下所示。在我看来,它似乎是根据英文原始值对选择的项进行排序(例如,Deutschland将在G (=德国)下找到),但在管理员中,这些值是根据当前语言排序的。这不是由JavaScript完成的(我尝试过禁用JS)。我不知道怎么解决这个问题。版本: Django 1.5.5,Django Countries 2.1.2

models.py

代码语言:javascript
复制
from django_countries.fields import CountryField
class MyModel(ModelSubClass):
    country = CountryField(_('country'), blank=True)
    #...

class MyForm(ModelSubForm):
    class Meta(object):
        model = MyModel
        #...

    def __init__(self, *args, **kwargs):
    super(MyForm, self).__init__(*args, **kwargs)
    self.fields['country'].required = True
    #...

views.py

代码语言:javascript
复制
class MyCreateView(CreateView):
    model = MyModel
    form_class = MyForm
    # overriding `dispatch`, `get_initial`, `form_valid`, `get_context_data`, `get_success_url`

my_template.html

代码语言:javascript
复制
{% extends "base.html" %}
{% load i18n %}
{% block content %}
<form class="form-horizontal" role="form" method="post" action="">
{% csrf_token %}
{{ form }}
<button type="submit" class="btn btn-success">{% trans 'Submit' %}</button>
</form>
{# ... #}
{% endblock content %}

如果需要的话我可以提供更多的信息。

另一件事是,使用非ASCII大写字母的国家的排序是错误的。但我认为这是另一个问题

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-04 10:03:35

MyForm's __init__中的原始选项重写选项

代码语言:javascript
复制
from django_countries import countries
class MyForm(ModelSubForm):
    class Meta(object):
        model = MyModel
        #...

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.fields['country'].choices = [self.fields['country'].choices[0]] + list(countries)
        #...

使用选项的第一项来保留空值(---------)。

据我所知,问题是models.py中某个字段的models.py是在服务器启动时加载的,即一次。在表单中,您可以根据请求覆盖它。排序由countries完成( Countries在同一个文件中的一个实例)。

我有一个更好的解决方案。

票数 1
EN

Stack Overflow用户

发布于 2014-09-02 14:48:56

这里之前,也曾提出过类似的问题。

答案是:

代码语言:javascript
复制
function sort(a, b) {               
        return (a.innerHTML > b.innerHTML) ? 1 : -1;
    };
$('#select_id option').sort(sort).appendTo('#select_id');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25626044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档