以django形式显示预填充字段

时间:2012-12-07 00:36:36

标签: django django-forms django-admin

我正在开发一款需要向多个用户发送电子邮件的应用。用户从单独的管理页面中挑选,然后在“发送新闻稿”操作中创建新闻稿对象,并将HttpResponseRedirect返回到新闻稿的管理编辑页面。我想要做的不是为收件人提供多个选择列表(列表中有太多地址可供任何使用)我只想要一个div列出所选的电子邮件地址以供参考,没有任何编辑能力。我该怎么做?

不确定为什么这是相关的,但是Newsletter模型看起来像这样

class Newsletter(models.Model):                                                                                                                                                                                     
    owner = models.ForeignKey(User, related_name='+', blank=False)                                                                                                                                                  
    sent = models.BooleanField(default=False)                                                                                                                                                                       
    date_created = models.DateTimeField(auto_now_add=True)                                                                                                                                                          
    date_sent = models.DateTimeField(null=True)                                                                                                                                                                     
    subject = models.CharField(max_length=255)                                                                                                                                                                      
    content = HTMLField()                                                                                                                                                                                           
    recipients = models.ManyToManyField(Email, related_name='+')                                                                                                                                                    

class Meta:                                                                                                                                                                                                     
    ordering = ['date_sent', 'date_created']                                              

没有视图,我想要的是在django admin中将收件人显示为不可编辑的电子邮件地址列表。我不想只是禁用小部件,因为电子邮件模型中的电子邮件太多,我只想在管理编辑页面的某个位置列出为此特定时事通讯选择的电子邮件。

1 个答案:

答案 0 :(得分:0)

最简单的方法:只读字段。

class MyAdmin(admin.ModelAdmin):
   readonly_fields = ('_recipients', )
   fields = ('_recipients',)

   def _recipients(self, obj):
     return u', '.join([x.email for x in obj.recipients.all()])
   _recipient