Mude o nome da variável "form" para "recipe" na primeira linha da view, já qué uma instância do seu model e não um form.
Sem ver o erro é difícil ajudar, mas veja se seu form no template está com method="post" e incluindo o {% csrf_token %}.
No curso que eu estou fazendo está form msm e está funcionando no da aula que eu estou assistindo e quanto a erros, o problema é que não aparece nenhum erro, nenhum!
Longe de querer questionar a metodologia do seu professor, mas existem problemas nessa view. A começar pela instância do model que mencionei, tem também o "comit" faltando um "m" que só não deu erro porque seu form não passou na validação, e outras coisas que poderiam ser simplificadas, como usar o get_object_or_404 ao invés desse bloco todo.
Sobre a validação, seria legal você postar o template e o seu AuthorRecipeForm. De qualquer forma, você pode debugar na view mesmo, antes do form.is_valid() verifique o retorno do "form.errors" para ter uma ideia do que está acontecendo.
Segue o bloco
class AuthorRecipeForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
add_attr(self.fields.get('preparation_steps'), 'class', 'span-2')
add_attr(self.fields.get('cover'), 'class', 'span-2')
class Meta:
model = Recipe
fields = 'title', 'description', 'preparation_time', \
'preparation_time_unit', 'servings', 'servings_unit', \
'preparation_steps', 'cover',
widgets = {
'cover': forms.FileInput(
attrs={
'class': 'span-2'
}
),
'servings': forms.Select(
choices=(
('Porções', 'Porções'),
('Pedaços', 'Pedaços'),
('Pessoas', 'Pessoas'),
)
),
'preparation_time_unit': forms.Select(
choices=(
('Horas', 'Horas'),
('Minutos', 'Minutos'),
)
)
}
edit: Encontrei o erro: Estava nesse servings que estava esperando um valor numerico , mas quando eu usei o forms.Select eu comecei a passar um texto para ele fazendo com que desse erro.