Chinaunix首页 | 论坛 | 博客
  • 博客访问: 308845
  • 博文数量: 47
  • 博客积分: 1190
  • 博客等级: 少尉
  • 技术积分: 523
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-14 20:30
文章分类

全部博文(47)

文章存档

2016年(1)

2012年(46)

我的朋友

分类: 系统运维

2012-06-27 10:32:13

普通的form field初始化过程:

class UserNotificationForm(forms.Form):
      by_stream_bundle = forms.ModelMultipleChoiceField(queryset=BundleStream.objects.all())

但此时queryset将不能接受参数,而且就算使用了__init__(),因为member和__init__调用先后的关系,也不能改变by_stream_bundle field的参数。

Solution: ()
class UserNotificationForm(forms.Form):
    def __init__(self, user, *args, **kwargs):
        super(UserNotificationForm, self).__init__(*args, **kwargs)
        self.user = user
        self.fields['by_stream_bundle'] = forms.ModelMultipleChoiceField(queryset=BundleStream.objects.accessible_by_principal(self.user))

OR

class UserNotificationForm(forms.Form):
    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user')
        super(UserNotificationForm, self).__init__(*args, **kwargs)
        self.fields['by_stream_bundle'] = forms.ModelMultipleChoiceField(queryset=BundleStream.objects.accessible_by_principal(self.user))

阅读(1302) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~