Как сделать общий вид как для создания нового поста, так и для его редактирования в Django - PullRequest
1 голос
/ 12 ноября 2011

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

Если сообщение существует, то будет действительный post_id, и я выберу правильный объект публикации и выведу форму с заполненными полями, но если post_id нет, я создам новую пустую форму.

Однако я получаю сообщение об ошибке

  • post_form () принимает ровно 2 аргумента (1 дано)

Что я делаю не так?

def post_form(request,post_id):

    context_instance=RequestContext(request)

    if post_id:
        post = get_object_or_404(Post, pk=post_id)    
    else:
        #if the user is authenticated then pass the user object
        if request.user.is_authenticated():    
            post = Post(creator=request.user)
        else:
            post = Post()

    if request.method == 'POST':        
        if 'save' in request.POST:
            form = PostForm(request.POST, instance = post)
            if form.is_valid():
                form.save()
                return redirect(post)

    # Instantiate an empty form with the given user          
    else:
        form = PostForm(instance = post)

    return render_to_response('forum/post.html', {'form':form}, context_instance)

1 Ответ

1 голос
/ 12 ноября 2011

похоже, вам нужно значение по умолчанию для post_id

def post_form(request, post_id=None):
    ...
...