Advertisement
horozov86

Пренаписване на метода save

Aug 30th, 2024
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.41 KB | None | 0 0
  1. Ако имаме този модел:
  2.  
  3. from django.db import models
  4. from django.utils import timezone
  5.  
  6. class BlogPost(models.Model):
  7.     title = models.CharField(max_length=255)
  8.     content = models.TextField()
  9.     author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
  10.     published_date = models.DateTimeField(blank=True, null=True)
  11.     views = models.IntegerField(default=0)
  12.  
  13. Ако във view-то след if request.method == "POST": запишем само този код:
  14.  
  15. 1. Сценарий:
  16.  
  17. form = BlogPostForm(request.POST)
  18. if form.is_valid():
  19.     instance = form.save(commit=True)
  20.  
  21. author: Няма да бъде попълнено автоматично.
  22. published_date: Няма да бъде попълнено автоматично.
  23. views: Ще бъде попълнено автоматично с 0 поради зададената стойност по подразбиране.
  24.  
  25. 2. Сценарий:
  26. Ако искаме author и published_date да бъдат зададени, ще трябва да го направим ръчно:
  27.  
  28. form = BlogPostForm(request.POST)
  29. if form.is_valid():
  30.     instance = form.save(commit=False)
  31.     instance.author = request.user  # Задаване на автора ръчно
  32.     instance.published_date = timezone.now()  # Задаване на датата на публикуване ръчно
  33.     instance.save()  # Записване на обекта в базата данни
  34.  
  35. 3. Как ще използваме формата във view-то:
  36.  
  37. from django.utils import timezone
  38. from django.shortcuts import render, redirect
  39. from .forms import BlogPostForm
  40.  
  41. def create_blog_post(request):
  42.     if request.method == "POST":
  43.         form = BlogPostForm(request.POST)
  44.         if form.is_valid():
  45.             instance = form.save(commit=False)
  46.             instance.author = request.user  # Задаваме текущия потребител като автор
  47.             instance.published_date = timezone.now()  # Задаваме текущата дата и час като дата на публикуване
  48.             instance.save()  # Записваме обекта в базата данни
  49.             return redirect('success_view')  # Пренасочване след успешен запис
  50.     else:
  51.         form = BlogPostForm()
  52.  
  53.     return render(request, 'create_blog_post.html', {'form': form})
  54.  
  55.  
  56.  
  57.  
  58.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement