So I have my UpdateView set up to send a request object to the form so I can modify a queryset in the form (based on request.user)
my views.py:
class DataSourceUpdateView(UpdateView):
model = DataSource
form_class = DataSourceForm
template_name = 'engine/datasource_update.html'
def get(self, request, *args, **kwargs):
obj = DataSource.objects.get(pk=kwargs['pk'])
self.object = None
form = DataSourceForm(request)
return self.render_to_response(
self.get_context_data(form=form,
object=obj))
def post(self, request, *args, **kwargs):
form = DataSourceForm(request, request.POST, request.FILES)
if form.is_valid:
return self.form_valid(form)
else:
return self.form_invalid(form)
my forms.py:
class DataSourceForm(forms.ModelForm):
def __init__(self, request, *args, **kwargs):
self.request = request
super(DataSourceForm, self).__init__(*args, **kwargs)
self.fields['dataset_request'].queryset = DatasetRequest.objects.filter(
creator=self.request.user)
class Meta:
model = DataSource
exclude = ('creator', 'vote_score', 'num_vote_up',
'num_vote_down', 'file_size', 'slug')
My problem is, in the template, the form is not populated with existing values. How can I fix this?