【问题标题】:ImproperlyConfigured at /news/create/ CreateNewsView is missing a QuerySet在 /news/create/ CreateNewsView 配置不当,缺少 QuerySet
【发布时间】:2019-11-29 11:34:20
【问题描述】:

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})

【问题讨论】:

  • 尝试删除class CreateNewsView(LoginRequiredMixin,CreateView,)中的尾随,
  • 您需要显示完整的错误和回溯

标签: python django django-models view


【解决方案1】:

在您的 CreateView 中添加 model = News 并使用 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)  

【讨论】:

    猜你喜欢
    • 2016-06-27
    • 2017-08-20
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 2021-11-13
    • 2018-10-22
    相关资源
    最近更新 更多