У меня есть модель:Джанго ModelForm - форма отображения значений
class SchedulerProfile(models.Model):
user = models.ForeignKey(User, unique=True)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
def __unicode__(self):
return u'%s' % (self.user)
У меня также есть модель, которая имеет отношение M2M с планировщиком:
class OfficialProfile(models.Model):
user = models.ForeignKey(User, unique=True)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
schedulers = models.ManyToManyField(SchedulerProfile, verbose_name="Your schedulers", related_name="off_schedulers")
Когда я создаю ModelForm из OfficialProfile , форма отображает содержимое планировщика multiselect как имя пользователя. Я бы хотел, чтобы он отображал user.first_name user.last_name
в поле вместо пользователя. Я знаю, что могу изменить возвращаемое значение unicode, чтобы выполнить это, но я бы предпочел не делать этого по причинам. В __init__
в ModelForm, вы должны быть в состоянии сделать что-то вроде:
self.fields['schedulers'].queryset = SchedulerProfile.objects.values('user__first_name', 'user__last_name')
Но это не дает желаемых результатов. Это похоже на действительно основной вопрос, но поиск ответа не показал многого.