/ news / create / CreateNewsView的配置不正确,缺少查询集

问题描述 投票:0回答:1

CreateNewsView缺少查询集

class CreateNewsView(LoginRequiredMixin,CreateView,):
   login_url='/accounts/login'
   news_form_class=NewsCreateForm

   template_name='news/create_news.html'
   success_url=reverse_lazy('home')


   def form_valid(self,form):
       tag_list = []
       news = form.save(commit=False)
       title= form.cleaned_data['title']
       tags= form.cleaned_data['tags']
       tag_list = [Tag.objects.get_or_create(name=tag)[0] for tag in tags.split()]

       # news_tag=form.cleaned_data['news_tag']
       news.author = self.request.user
       news.slug = slugify(title)
       for tag in tag_list:
           news.tags.add(tag)
       news.save()
       return super(CreateNewsView,self).form_valid(form)


   def form_invalid(self,form):
       print (form.errors)
       return super(CreateNewsView,self).form_invalid(form)  

我的模型:它的新闻网站中有要创建的标签,添加标签时我遇到了错误。我没有使用TaggableManager()作为标签,而是创建了自己的模型

class Tag(models.Model):
   name = models.CharField(max_length=30)


class News(models.Model):
    CATEGORY=(("0","Politics"),("1","Sports"),("2","Health"),("3","Business"),("4","International"),("5","Finance"))
    title=models.CharField(max_length=250)
    story= models.TextField()
    count= models.IntegerField(default=0)
    tags = models.ManyToManyField(Tag)
    video_url = models.URLField(max_length=270, null=True)  #makemigrations garna baki xa
    category= models.CharField(choices=CATEGORY, max_length=2)
    slug=models.SlugField(max_length=270,blank=True,null=True)
    created_at=models.DateTimeField(auto_now_add=True)
    updated_at=models.DateTimeField(auto_now=True)
    cover_image=models.ImageField(upload_to="uploads")
    author= models.ForeignKey(User, on_delete=models.SET_NULL,null=True)
    video_image = models.ImageField(null=True)

    def get_absolute_url(self):
        return reverse("detail_news",kwargs={"category":self.get_category_display(), "pk":self.pk, "slug":self.slug})
python django django-models view
1个回答
0
投票
添加模型=新闻并在您的CreateView中使用form_class。

class CreateNewsView(LoginRequiredMixin,CreateView,): model = News form_class=NewsCreateForm template_name='news/create_news.html' success_url=reverse_lazy('home') def form_valid(self,form): tag_list = [] news = form.save(commit=False) title= form.cleaned_data['title'] tags= form.cleaned_data['tags'] tag_list = [Tag.objects.get_or_create(name=tag)[0] for tag in tags.split()] # news_tag=form.cleaned_data['news_tag'] news.author = self.request.user news.slug = slugify(title) for tag in tag_list: news.tags.add(tag) news.save() return super(CreateNewsView,self).form_valid(form) def form_invalid(self,form): print (form.errors) return super(CreateNewsView,self).form_invalid(form)

© www.soinside.com 2019 - 2024. All rights reserved.