2016-03-11 4 views
0

Я использую класс по умолчанию User от from django.contrib.auth.models import User. При создании пользователя, когда пользователь создан, я устанавливаю поле имени пользователя случайным хэшем. Когда я использую модель в поле ManyToMany и использую ее в admin Django, случайный хеш отображается в поле выбора. Есть ли способ указать поле, которое должно быть взято из модели, которая будет отображаться в окне выбора, чтобы я мог указать модель как поле ManyToMany и использовать электронное письмо, которое будет отображаться в форме администратора django.Укажите поле, которое будет отображаться в администраторе django.

class TestModel(models.Model): 
    group = models.ManyToManyField(Group, null=True) 
    user = models.ManyToManyField(User, null=True) 

Есть поле, как DISPLAY_NAME, который может быть передан в поле модели таким образом, что соответствующее поле может быть взято из модели ManyToMany для рендеринга. Я использую Django 1.5.5

ответ

2

Я думаю, что вам нужно сделать что-то вроде этого,

class TestModelAdminForm(forms.ModelForm): 
    user = forms.MultipleChoiceField(choices=[ (user.id, user.email) for user in User.objects.all()]) 
    class Meta: 
     model = TestModel 
     fields = ('user','group') 

class TestModelAdmin(admin.ModelAdmin): 
    form = TestModelAdminForm 
+0

Большое спасибо. Я думаю, что понимание 'o' в списке должно быть' user'. Я не мог редактировать то же самое из-за ограничения персонажа. @Anoop – xtreak