2010-06-08 38 views
5

OK, đây là câu hỏi.Làm cách nào để chỉ định thứ tự các giá trị trong danh sách thả xuống trong một Django ModelForm?

class UserForm(forms.ModelForm): 

    class Meta: 
     model = User 
     fields = ('team', 'related_projects') 

Trong models.py lớp User được định nghĩa như sau:

class User (models.Model): 
    team = models.ForeignKey(Team, verbose_name = _('team')) 
    related_projects = models.ManyToManyField(Project, blank = True) 

Cả teamrelated_projects được trả lại như một dropdown-box. Các giá trị là tất cả các đội hiện có trong hệ thống và tất cả các dự án hiện có trong hệ thống. Đó là tất cả các quyền, nhưng họ chỉ được đặt hàng bằng khóa chính, và tôi muốn nhìn thấy chúng theo thứ tự bảng chữ cái. Tôi nên chỉ định thứ tự cho các giá trị trong danh sách thả xuống ở đâu?

+2

http://stackoverflow.com/questions/923799/reorder-users-in-django-auth – Amarghosh

+0

Phát hiện ra rằng câu hỏi này đã được thảo luận trên StackOverFlow (http://stackoverflow.com/questions/1474135/django-admin-ordering-of-foreignkey-and-manytomanyfield-relations-referencing-us), và cũng tìm thấy giải pháp ở đây: http: //code.djangoproject .com/ticket/6089 # comments% 3A8 Xin lỗi vì đã dành thời gian, các bạn, ngay sau khi tôi đưa ra câu hỏi đúng, tôi đã tìm ra giải pháp trong Google. – Graf

Trả lời

13

Bạn cần chỉ định ghi đè cho trường team và sau đó bạn có thể ghi đè đơn đặt hàng với đối số queryset của nó. Ở đây tôi giả định thuộc tính trong Team bạn muốn sắp xếp là name.

class UserForm(forms.ModelForm): 
    team = forms.ModelChoiceField(queryset=Team.objects.order_by('name')) 

    class Meta: 
     model = User 
     fields = ('team', 'related_projects') 

Bạn có thể đọc thêm về ModelChoiceField đây: http://docs.djangoproject.com/en/dev/ref/forms/fields/#modelchoicefield

+0

Tôi biết điều này là muộn cho trò chơi, và một dupe, nhưng điều này sẽ là câu trả lời được chấp nhận. Cảm ơn @Oli! –

Các vấn đề liên quan