You can override get_form_kwargsand pass the dictionary userto kwargs. Then in your method __init__()set the field in the form.
views.py
Pass userin kwargsby overriding get_form_kwargs().
class MyCreateView(CreateView):
form_class = waypointForm
def get_form_kwargs(self):
kwargs = super(MyCreateView, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
forms.py
__init__(). user kwargs .
class waypointForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
user = kwargs.pop('user', None)
super(waypointForm, self).__init__(*args, **kwargs)
self.fields['waypoints'] = forms.ModelChoiceField(queryset=Waypoint.objects.filter(user=user))