UpdateView
חלק מהיחידה תצוגות מבוססות מחלקות במסלול ה-Django של Coddy. שיעור 12 מתוך 18.
מפרסמי משרות צריכים לתקן את המשרות שלהם. עריכת שורה היא כמו יצירת שורה, אלא שהטופס מתחיל כשהוא מלא, והשמירה משנה את השורה במקום להוסיף שורה חדשה. UpdateView עושה את שני הדברים. אתר מתכונים:
class RecipeUpdateView(UpdateView):
model = Recipe
fields = ["title", "cuisine", "minutes"]
# urls.py
path("recipes/<int:pk>/change/", views.RecipeUpdateView.as_view(), name="change")הוא מוצא את השורה כפי שעושה DetailView, לפי ה-pk או ה-slug שבכתובת ה-URL, ומחזיר 404 כשאין שורה תואמת. לאחר השמירה הוא מעביר אותך לאותו מקום שאליו CreateView מעביר: success_url, או אל get_absolute_url() של השורה.
הוא משתמש באותו recipes/recipe_form.html כמו CreateView ומוסיף את השורה בתור object, כך ש-{% if object %} הוא true רק בזמן עריכה. חובה לציין fields: Django לא ינחש אילו שדות מבקר רשאי לשנות.
אתגר
קללדפי המשרות יש עכשיו קישור Edit. צרו את הדף שאליו הוא מוביל.
- ב־
jobs/views.py, הוסיפו אתJobUpdateView, UpdateViewשלJobעם אותם חמישה שדות כמו ב־JobCreateView. - ב־
jobs/urls.py, הוסיפו את הנתיב"jobs/<slug:slug>/edit/"בשםedit.
פתחו משרה, לחצו על Edit ושמרו: תחזרו למשרה עם השינוי שביצעתם.
נסו בעצמכם
from django.views.generic import CreateView, DetailView, ListView, TemplateView
from .models import Job
class HomeView(TemplateView):
template_name = "jobs/home.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["count"] = Job.objects.count()
context["latest"] = Job.objects.order_by("-posted").first()
return context
class AboutView(TemplateView):
template_name = "jobs/about.html"
class JobListView(ListView):
model = Job
context_object_name = "jobs"
ordering = ["-posted"]
paginate_by = 5
def get_queryset(self):
jobs = super().get_queryset()
city = self.request.GET.get("city")
if city:
jobs = jobs.filter(city=city)
return jobs
class JobDetailView(DetailView):
model = Job
class JobCreateView(CreateView):
model = Job
fields = ["title", "company", "city", "salary", "description"]
כל השיעורים ביחידה תצוגות מבוססות מחלקות
4תצוגות לעריכה
CreateViewהגעה למשרה החדשהתרגלו בעצמכם: Django אונליין