【发布时间】:2015-05-26 17:08:18
【问题描述】:
我有一个模型:
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")
当我从 OfficialProfile 创建 ModelForm 时,表单将调度程序多选的内容呈现为用户名。我想让它在字段中而不是用户中显示user.first_name user.last_name。我知道我可以更改 unicode 返回值来完成此操作,但出于某种原因,我宁愿不这样做。在 ModelForm 的 __init__ 中,您应该能够执行以下操作:
self.fields['schedulers'].queryset = SchedulerProfile.objects.values('user__first_name', 'user__last_name')
但这不会产生预期的结果。这似乎是一个非常基本的问题,但寻找答案并没有太多发现。
【问题讨论】:
标签: django django-forms