Django:在DDTCMS中使用Photologue做相册并增加封面的探索

 

写于2010年11月6日

今天主要是想把admin中的一个图集的cover 在编辑的时候,限定为该图集所属的图片中,但是没有发现好的方法。我使用了2种尝试。

一种是在models.py中的gallery的init函数中初始化cover的可选值:

    #def __init__(self, *args, **kwargs):
    #    #self.cover.choices = self.photos.all()
    #    o=self.cover
    #    super(Gallery, self).__init__(*args, **kwargs)
    #    #self.set_cover_choices()
    #    self.cover.queryset = self.photos.all()

        
    #def set_cover_choices(self):
    #    p=self.photos.all()
    #    o=type(self.cover)
    #    self.cover.choices = self.photos.all()

但是init根本不行,说cover是个nonetype,也就是说cover根本 就没有被初始化。

第二种就是改admin.py了

class GalleryAdmin(admin.ModelAdmin):

    list_display = ('title', 'date_added', 'photo_count', 'is_public')

    list_filter = ['date_added', 'is_public']

    date_hierarchy = 'date_added'

    prepopulated_fields = {'title_slug': ('title',)}

    filter_horizontal = ('photos',)

    

    def formfield_for_dbfield(self, db_field, **kwargs):

        field = super(GalleryAdmin, self).formfield_for_dbfield(db_field, **kwargs) # Get the default field

        if db_field.name == 'cover': 

            my_choices = [('', '---------'),('1',"fff")]

            #my_choices.extend(Photo.objects.filter(gallery=实例化的gallery).values_list('id','name'))

            #print my_choices

            d=dir(self)

            p=dir(self.model)

            q=self.model.cover

            g()

            field.choices = my_choices

        return field

但是问题是,不知道怎么获取该GalleryAdmin具体实例化时使用的Gallery是哪个,因此搁浅。

另外通过查看admin的代码,知道

    # DEPRECATED methods.

    #

def __call__(self, request, url):

This function still exists for backwards-compatibility; it will be

        removed in Django 1.3.


也就是说在django1.3中,这种call的方式来获取request的方法,进而获取当前登录用户的方法可能要失败了。这个我在blog中使用过,从国外的朋友那里借过来的方法。

 想了又想,admin真的是个鸡肋,看来以后的方向就是减少甚至不在admin的界面上作什么优化了,把功夫下在前台上。Admin的管理功能的增强还不如放在前面呢,这样在view中处理什么都很方便的。

傻逼的admin。

实在不行的话,我只好再下点精力转向pylons那种自由的东西了,告别django种种的鸡肋模块,如orm,如urlconf,如模板渲染语言,等等,真的是,要找django的缺点,真是一大堆。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值