2010-09-02 16 views
6

Aquí está mi configuración:Solicitud de un campo Muchos-A-Muchos de Django administración

from django.contrib.auth.models import User 

class Product(models.Model): 
    ... 
    email_users = models.ManyToManyField(User, null=True, blank=True) 
    ... 

[otra parte]

class ProductAdmin(admin.ModelAdmin): 
    list_display = ('name','platform') 

admin.site.register(Product, ProductAdmin) 

Mi principal problema es, cuando estoy viendo la página "Producto" en la sección de administración, los usuarios de correo electrónico no están siendo ordenados por su ID por defecto, y me gustaría que se ordenaran por su nombre de usuario.

Por lo que he leído hasta ahora, parece que tengo que estar añadiendo:

email_users.admin_order_field = 'xxxx' 

Pero no estoy muy seguro de lo que es la sintaxis para tener acceso al nombre de usuario.

+0

¿Ha probado este truco con el uso de ModelForm y ModelChoiceField? http://stackoverflow.com/questions/1474135/ – hao

+0

¡Gracias! Aparentemente, mi búsqueda-fu aún no está a la altura. :) – MichaelC

Respuesta

2

La respuesta se hace referencia en el comentario de Hao Lian anterior, en esencia, esto es lo que había que hacer:

class ProductAdminForm(ModelForm): 
    email_users = forms.ModelMultipleChoiceField(queryset=User.objects.order_by('username')) 

    class Meta: 
     model = Product 

class ProductAdmin(admin.ModelAdmin): 
    list_display = ('name','platform') 
    form = ProductAdminForm 

admin.site.register(Product, ProductAdmin) 

mina fue ligeramente diferente en el sentido de que yo requería la forms.ModelMultipleChoiceField, mientras que la respuesta proporcionó formularios usados.ModelChoiceField()

Cuestiones relacionadas