I am trying to filter a field on a ModelForm. I am subclassing the generic 
CreateView for my view. 

I found many references to my problem on the web, but the solutions do not 
seem to work (for me at least) with Django 1.3's class-based views.

Specifically, my users need to add Subscribers, and each Subscriber has a 
m2m field that assigns him/her to a SubscriberList. When the form to create 
a subscriber loads for a given user, I need to options in subscriber_list to 
be filtered for that user's lists only. 

Here are my models:

#models.py

class Subscriber(models.Model):

user = models.ForeignKey(User)
subscriber_list = models.ManyToManyField('SubscriberList')
....
class SubscriberList(models.Model):

user = models.ForeignKey(User)
name = models.CharField(max_length=70)
....
Here is my view:

#views.py

class SubscriberCreateView(AuthCreateView):
model = Subscriber
template_name = "forms/app.html"
form_class = SubscriberForm
success_url = "/app/subscribers/"
 def form_valid(self, form):
self.object = form.save(commit=False)
self.object.user = self.request.user
return super(SubscriberCreateView, self).form_valid(form) 



Here is my original form for adding a Subscriber, with no filter:

#forms.py

class SubscriberForm(ModelForm):
 class Meta:
model = Subscriber
exclude = ('user', 'facebook_id', 'twitter_id')

Here is my modified form, attempting to filter, but doesn't work:

#forms.py

class SubscriberForm(ModelForm):
 class Meta:
model = Subscriber
exclude = ('user', 'facebook_id', 'twitter_id')
 def __init__(self, user, **kwargs):
super(SubscriberForm, self).__init__(**kwargs)
self.fields['subscriber_list'].queryset = 
SubscriberList.objects.filter(user=user)
If I change this modified form as so:

def __init__(self, user=None, **kwargs)

It works - It brings me NO subscriber lists. But any way I try to pass the 
request user, for eg., def __init__(self, user=request.user, **kwargs), I 
invariably get a a name "request" or name "self" not defined error.

So, how can I modify my code to filter subscriber_list by the request.user, 
and still use Django 1.3's CreateView.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/django-users/-/fD7CoioGtgIJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to