Gallery App的管理界面

时间:2014-05-12 02:26:57

标签: python django django-models django-admin

我想创建这样的管理员:http://lightbird.net/dbe/_static/p1.png

我现在拥有的是:

def get_upload_file_name(instance, filename):
    new_file_path_and_name = os.path.join(MEDIA_ROOT,'img/albums')
    return new_file_path_and_name

class Album(models.Model):
    title = models.CharField(max_length = 60)

    def __unicode__(self):
        return self.title

class Tag(models.Model):
    tag = models.CharField(max_length = 50)

    def __unicode__(self):
        return self.tag

class Image(models.Model):
    title = models.CharField(max_length = 60, blank = True, null = True)
    image = models.FileField(upload_to = get_upload_file_name)
    tags = models.ManyToManyField(Tag, blank = True)
    albums = models.ForeignKey(Album)
    width = models.IntegerField(blank = True, null = True)
    height = models.IntegerField(blank = True, null = True)
    created = models.DateTimeField(auto_now_add=True)

    def tags_(self):
        lst = [x[1] for x in self.tags.values_list()]
        return str(join(lst, ", "))

    def albums_(self):
        lst = [x[1] for x in self.albums.values_list()]
        return str(join(lst, ", "))


    def __unicode__(self):
        return self.image.name 

class AlbumAdmin(admin.ModelAdmin):
    search_fields = ["title"]
    list_display = ["title"]

class TagAdmin(admin.ModelAdmin):
    list_display = ["tag"]

class ImageAdmin(admin.ModelAdmin):
    search_fields = ["title"]
    list_display = ["__unicode__", "title", "tags_", "albums_", "created"]
    list_filter = ["tags", "albums"]

admin.site.register(Album, AlbumAdmin)
admin.site.register(Tag, TagAdmin)
admin.site.register(Image, ImageAdmin)

我不确定ImageAdmin的list_display的可接受输入是什么。我正在关注lightbird(http://lightbird.net/dbe/photo.html)教程,但由于它已经过时,我正在做一些自己的选择。我不确定如何修改我的tags_和albums_方法来实现管理布局。

我收到错误:

File "/Users/bradfordli/Development/DjangoEnvironment/django_1_6_4/bin/PersonalWebsite/gallery/models.py" in tags_
  45.       return str(join(lst, ", "))

Exception Type: NameError at /admin/gallery/image/
Exception Value: global name 'join' is not defined

由于我不确定list_display's适当的输入

,我不知道如何解决这个问题

1 个答案:

答案 0 :(得分:1)

python中确实没有join() built-in functionjoin()是字符串上的方法。

替换:

return str(join(lst, ", "))

使用:

return ", ".join(lst)