使用django创建和更新带有图像的帖子,不起作用

时间:2019-05-24 18:26:37

标签: django-models

我正在使用Django开发博客项目,并且想要创建帖子并更新帖子, 当我尝试更新或创建帖子时,它会在/ post / 35 / update /中显示此错误 将组名“ pk”重新定义为组2;是第1组的第41名 但如果返回首页,该职位将得到更新 我的模型。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```

0 个答案:

没有答案