Advertisement
Lightking95

CreateView

Jun 2nd, 2021
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.55 KB | None | 0 0
  1. #views.py
  2. @method_decorator([login_required(login_url="/login/"), ], name='dispatch')
  3. class CreatePublicationView(CreateView):
  4.     form_class = PublicationForm
  5.     model = Publication
  6.     template_name = "main/create-publication.html"
  7.  
  8.     def form_valid(self, form):
  9.         instance = form.save(commit=False)
  10.         instance.author = self.request.user
  11.         instance.save()
  12.         return redirect("index")
  13.  
  14.     def form_invalid(self, form):
  15.         messages.error(self.request, "Необходимо заполнить все поля!")
  16.         return self.render_to_response(
  17.             self.get_context_data(request=self.request, form=form))
  18.  
  19. #forms.py
  20. class PublicationForm(forms.ModelForm):
  21.     class Meta:
  22.         model = Publication
  23.         fields = (
  24.             'title', 'title_en', 'title_ky', 'journal', 'annotation', 'annotation_en', 'annotation_ky', 'keywords',
  25.             'keywords_en', 'keywords_ky', 'file')
  26.  
  27.  
  28. class Publication(models.Model):
  29.     title = models.CharField(max_length=255, verbose_name=_("Заголовок"))
  30.     annotation = RichTextField(config_name='awesome_ckeditor', verbose_name=_("Аннотация"))
  31.     create_date = models.DateField(auto_now=True, verbose_name=_("Дата создания"))
  32.     journal = models.ForeignKey(Journal, on_delete=models.SET_NULL, null=True, verbose_name=_('Журнал'))
  33.  
  34. class Journal(models.Model):
  35.     NUMBER = (
  36.         ('FR', '№1'),
  37.         ('SC', '№2'),
  38.     )
  39.  
  40.     title = models.CharField(max_length=200, verbose_name=_('Наименование'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement