Instead of messing with a double purpose view, which is not trivial to find out which and when to run the correct method (and not recommended), add a third view that will redirect to CreateView or EditView.
It should look something like this:
from django.core.urlresolvers import reverse
class AddItemView(generic.CreateView):
...
class EditItemView(generic.EditView):
...
class UpdateItemRedirectView(generic.RedirectView):
def get_redirect_url(self):
if Item.objects.get( ...criteria... ).exists():
return reverse("url_name_of_edit_view")
else:
return reverse("url_name_of_add_view")