30👍
One way would be to define a custom form to use for your Team model in the admin, and override the manager
field to use a queryset with the correct ordering:
from django import forms
class TeamForm(forms.ModelForm):
manager = forms.ModelChoiceField(queryset=User.objects.order_by('username'))
class Meta:
model = Team
class TeamAdmin(admin.ModelAdmin):
list_display = ('name', 'manager')
form = TeamForm
38👍
This
class Meta:
ordering = ['username']
should be
ordering = ['user__username']
if it’s in your UserProfile admin class. That’ll stop the exception, but I don’t think it helps you.
Ordering the User model as you describe is quite tricky, but see http://code.djangoproject.com/ticket/6089#comment:8 for a solution.
- [Django]-Best way to store user-uploaded files in a webapp
- [Django]-Django filter many-to-many with contains
- [Django]-Remove "add another" in Django admin screen
4👍
This might be dangerous for some reason, but this can be done in one line in your project’s models.py
file:
User._meta.ordering=["username"]
- [Django]-Filtering using viewsets in django rest framework
- [Django]-Multithreading for Python Django
- [Django]-Django: How to make a form with custom templating?
2👍
For me, the only working solution was to use Proxy Model. As stated in the documentation, you can create own proxy models for even built-in models and customize anything like in regular models:
class OrderedUser(User):
class Meta:
proxy = True
ordering = ["username"]
def __str__(self):
return '%s %s' % (self.first_name, self.last_name)
After that, in your model just change Foreign Key to:
user = models.OneToOneField(OrderedUser, unique=True)
or even more suitable
user = models.OneToOneField(OrderedUser, unique = True, parent_link = True)
- [Django]-Force django-admin startproject if project folder already exists
- [Django]-Django unit tests without a db
- [Django]-Pip install: How to force a specific package version