How to do it...

To complete this recipe, execute the following two steps:

  1. Modify the IdeaForm model form as follows:
# myprojects/apps/ideas/forms.py
from django import forms
from .models import Idea

class IdeaForm(forms.ModelForm):
class Meta:
model = Idea
exclude = ["author"]

def __init__(self, request, *args, **kwargs):
self.request = request
super().__init__(*args, **kwargs)

def save(self, commit=True):
instance = super().save(commit=False)
instance.author = self.request.user
if commit:
instance.save()
self.save_m2m()

return instance
  1. Modify the view to add or change the ideas:
# myproject/apps/ideas/views.py
from django.contrib.auth.decorators import login_required
from django.shortcuts import render, redirect, get_object_or_404

from .forms import IdeaForm
from .models import Idea


@login_required
def add_or_change_idea(request, pk=None):
idea = None
if pk:
idea = get_object_or_404(Idea, pk=pk)

if request.method == "POST":
form = IdeaForm(request, data=request.POST,
files=request.FILES, instance=idea)

if form.is_valid():
idea = form.save()
return redirect("ideas:idea_detail", pk=idea.pk)
else:
form = IdeaForm(request, instance=idea)

context = {"idea": idea, "form": form}
return render(request, "ideas/idea_form.html", context)
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.133.141.6