Можно ли использовать этот код как первый, а не как второй?

def create_new(request):
    if request.method == 'POST':
        form = ArticleForm(request.POST)
        form.id_author = request.user.id
        if form.is_valid():
            form.save()
            return redirect('home')
    return render(request, 'main/create_new.html')
def create_new(request):
    if request.method == 'POST':
        form = ArticleForm(request.POST)
        if form.is_valid():
             article = form.save(commit=False)
             article.author = request.user
            article.save()
            return redirect('home')
    return render(request, 'main/create_new.html')

Возможно ли заменить 2-ой код на первый? он показывает какую-то ошибку

Нет, сначала всегда нужно проверить, действительна ли форма или нет, затем после этого можно сохранить форму с помощью commit=False, которая создает временный экземпляр, затем нужно присвоить любое значение этому экземпляру.

Второй подход правильный.

Вернуться на верх