(I'm speculating a little)
In your code snippet, lines 36-38:
sale = None
if 'edit' in request.GET:
sale = Sales.objects.get(sale_id=request.GET['edit'])
When you submit the form again, 'edit' is not in request.GET, so
'sale' never gets a value. When you then subsequently save the form,
it tries to save a new instance, which fails because it already
matches a row in the database.
Cheers
Tom