不正确配置DeletePost的select_related属性

时间:2017-08-30 15:06:33

标签: python django

所以我试图让当前登录的用户删除我们网站上的帖子。我正在使用带有select_related混合的DeleteView。我一直收到一条错误消息,说它配置不正确,需要成为元组或列表。这是错误,我的帖子模型和视图。不确定从哪里开始,这似乎不是一个非常受欢迎的错误,因为我在谷歌搜索中找不到多少。

错误:

ImproperlyConfigured at /colorsets/delete/7/
DeletePost's select_related property must be a tuple or list.

App Views.py

from django.shortcuts import render
from colorsets.forms import ColorForm
from colorsets import models
from colorsets.models import ColorSet
from django.utils import timezone

from django.contrib.auth import authenticate,login,logout
from django.http import HttpResponseRedirect, HttpResponse
from django.core.urlresolvers import reverse,reverse_lazy
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin
from braces.views import SelectRelatedMixin
from django.views.generic import (TemplateView,ListView,
                                    DetailView,CreateView,
                                    UpdateView,DeleteView)

# Create your views here.
#def index(request):
#   return render(request,'index.html')

class PostListView(ListView):
    model = ColorSet

    def get_queryset(self):
        return ColorSet.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')

class CreateColorSetView(LoginRequiredMixin,CreateView):
    login_url = '/login/'
    redirect_field_name = 'index.html'
    form_class = ColorForm
    model = ColorSet

    def form_valid(self,form):
        self.object = form.save(commit=False)
        self.object.user = self.request.user
        self.object.save()
        return super().form_valid(form)

class DeletePost(LoginRequiredMixin,SelectRelatedMixin,DeleteView):
    model = models.ColorSet
    select_related = ('user')
    success_url = reverse_lazy('index')

    def get_queryset(self):
        queryset = super().get_queryset()
        return queryset.filter(user_id=self.request.user.id)

    def delete(self,*args,**kwargs):
        messages.success(self.request,'Post Deleted')
        return super().delete(*args,**kwargs)

App models.py

from django.db import models
from django.core.urlresolvers import reverse
from django.conf import settings

from django.contrib.auth import get_user_model
User = get_user_model()

# Create your models here.
class ColorSet(models.Model):
    user = models.ForeignKey(User,related_name='colorset')
    published_date = models.DateTimeField(auto_now_add=True)
    name = models.CharField(max_length=50,blank=False)
    color_one = models.CharField(max_length=6,blank=False,default='cccccc')
    color_two = models.CharField(max_length=6,blank=False,default='ffffff')
    color_three = models.CharField(max_length=6,blank=False,default='e5e5e5')
    color_four = models.CharField(max_length=6,blank=False,default='f0f0f0')
    color_five = models.CharField(max_length=6,blank=False,default='bababa')

    def publish(self):
        self.save()

    def get_absolute_url(self):
        return reverse('index')

    def __str__(self):
        return self.name

回溯: enter image description here

如果您需要查看其他内容,请与我们联系。

1 个答案:

答案 0 :(得分:1)

您缺少逗号以使select_related成为元组。

select_related = ('user',)

如果没有逗号,('user')就是字符串'user'