создавать и обновлять пост с изображением, используя Django его не работает - PullRequest
0 голосов
/ 24 мая 2019

Я работаю над проектом блога, используя Django, и хочу создать пост и обновить пост, когда я пытаюсь обновить или создать сообщение, оно выглядит как эта ошибка в / post / 35 / update / переопределение имени группы 'pk' как группы 2; была группа 1 в положении 41 но пост будет обновлен, если вернуться домой мой model.py

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse
from PIL import Image

class Post(models.Model):
   title = models.CharField(max_length=100)
   content = models.TextField()
   date_posted = models.DateTimeField(default=timezone.now)
   author = models.ForeignKey(User, on_delete=models.CASCADE)
   image = models.ImageField(default='default.jpg', upload_to='post_image')
   tag_choices = (
       ('Sport', 'Sport'),
       ('Restaurants', 'Restaurants'),
       ('Historical Landmarks', 'Historical Landmarks'),
   )
   tag = models.CharField(max_length=100, default='non specified', choices=tag_choices)

   def __str__(self):
       return self.title

   def get_absolute_url(self):
       return reverse('post-detail', kwargs={'pk': self.pk})

   def save(self):
       super().save()

       img = Image.open(self.image.path)

       if img.height > 300 or img.width > 300:
           output_size = (300, 300)
           img.thumbnail(output_size)
           img.save(self.image.path) ```


my view.py

   ``` class PostCreateView(LoginRequiredMixin, CreateView):
   model = Post
   fields = ['title', 'tag', 'content', 'image']

   def form_valid(self, form):
       form.instance.author = self.request.user
       return super().form_valid(form)


class PostUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
   model = Post
   fields = ['title', 'tag', 'content', 'image']

   def form_valid(self, form):
       form.instance.author = self.request.user
       return super().form_valid(form)

   def test_func(self):
       post = self.get_object()
       if self.request.user == post.author:
           return True
       return False```
...