2013-03-18 61 views
1

我想在Django Admin list_display中顯示來自JSON字段的特定值。Django Admin list_display - 如何使用list_display從JSON字段中列出字典值

models.py: 
class Foo(models.Model): 
client = models.ForeignKey(Client, verbose_name="Kunde") 

description = models.CharField(verbose_name=u'Titel', max_length=100) 
description_file = models.FileField(verbose_name="Vorschau", upload_to='postings', blank=True, help_text=u'Vorschau/Endfassung') 
accepted_by_client = models.BooleanField(verbose_name="abgenommen", help_text=u"") 
needs_correction = models.BooleanField(verbose_name=u"Korrektur nötig", help_text=u"") 
active = models.BooleanField(verbose_name="Publiziert", help_text=u"") 
ctime = models.DateTimeField(verbose_name="Angelegt am", blank=True, null=True) 
valid_until = models.DateField(verbose_name=u"gültig bis", blank=True, null=True, default = lambda: datetime.datetime.now()+datetime.timedelta(days=28)) 
valid_from = models.DateField(verbose_name=u"gültig ab", blank=True, default=datetime.datetime.now) 
link = models.CharField(verbose_name="Formular", max_length=255, blank=True, help_text="generierter Link zum Formular") 
admin_notes = models.TextField(u'Notizen für Mitarbeiter', blank=True, help_text=u"") 
client_notes = models.TextField(verbose_name=u"Notizen für Kunde", blank=True, help_text=u"") 

context = JsonField() 

def __unicode__(self): 
    return self.client.company_name + ' : ' + str(self.id) 

admin.py: 

class FooAdmin(admin.ModelAdmin): 
    #list view 
    def apis(self, object): 
     data = Foo.context['bar'] 
     return data 

    list_display = (
     'id', 
     'client', 
     'description', 
     'active', 'ctime', 
     'valid_until', 
     'valid_from', 
     'clickable_preview_link', 
     'clickable_editor_link', 
     'apis' 
    ) 

admin.site.register(Foo, FooAdmin) 

我的問題是,我無法從JSON字段「上下文」訪問單個值。我只收到一個空欄。

我該怎麼做?

在此先感謝!

回答

0
class FooAdmin(admin.ModelAdmin): 
    #list view 
    def apis(self, object): 
     data = Foo.context['bar'] 
     return data 

    list_display = (
     'id', 
     'client', 
     'description', 
     'active', 'ctime', 
     'valid_until', 
     'valid_from', 
     'clickable_preview_link', 
     'clickable_editor_link', 
     'apis', 
     'json_data' 
    ) 

    def json_data(self, obj): 
     for key, value in obj.context: 
      return "{0}: {1}".format(key, value) 
     return '' 
相關問題