我在Django中有这个模型
class Country(models.Model):
name = models.CharField(max_length=80)
class Person(models.Model):
first_name = models.CharField(max_length=100, db_index=True)
last_name = models.CharField(max_length=100, db_index=True)
country = models.ForeignKey(Country)
和这个ModelForm
class PersonForm(forms.ModelForm):
class Meta:
model = Person
当我在模板中使用此表单时,一切正常,但<select>
中的国家/地区列表似乎无序。我怎么订购呢?
答案 0 :(得分:20)
您可以使用ordering属性:
class Country(models.Model):
name = models.CharField(max_length=80)
class Meta:
ordering = ["name"]
如果您将排序设置为Country类,它将根据您的需要显示它们。
答案 1 :(得分:9)
如果你不能或不想在模型的Meta类中使用排序属性,你也可以这样做:
您需要创建一个Form对象,例如:
from django import forms
class PersonForm(forms.ModelForm):
country = forms.ModelChoiceField(queryset=Country.objects.all().order_by('name'))
class Meta:
model = Person
答案 2 :(得分:5)
这里有2个很好的答案,但我想保留模型中的no_of_columns = 5
Book1 =pd.read_excel("D:\Python\Book1.xlsx",header=None,name=range(no_of_columns))
,help_text
和其他设置,而不必重复它们,也不要更改默认排序。模型。这就是我的所作所为:
blank
基本上我只是在自动添加的字段上更新了查询集,以便按照我想要的方式进行排序。
答案 3 :(得分:0)
尝试将其添加到类Meta中,类Person:
ordering = ['country']
http://docs.djangoproject.com/en/dev/ref/models/options/#ordering
答案 4 :(得分:0)
在 view.py 首先:您创建表单
form = YourForm(request.POST)
稍后设置查询:
form.fields['country '].queryset = YourDBTable.objects.all().order_by('Your_Attr')