Django Python:基为10的int()的文本无效:“arcetina”

2024-06-01 08:56:03 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图用一个ForeignKey作者过滤QuerySet的用户帖子时,出现以下错误。Django对以下行有问题:

posts = Post.objects.filter(author=components[0])

然后说出这个错误:

^{pr2}$

这是我的views.py

def post_list(request):
    global posts

    context = {'posts' : posts}

    for post in posts:
        if not post.field:
            post.field = 'Unspecified'

    if request.method == "POST":
        searchRegex = request.POST.get("searchregex")
        components = searchRegex.split()

        if searchRegex == "-reversedate":
            posts = posts.reverse()
            context = {'posts' : posts}

        if "-user" in searchRegex:
            posts = Post.objects.filter(author=components[0])

    return render(request, 'webapp/threadfeed.html', context)

这是我的models.py

class Post(models.Model):
    title = models.CharField(max_length=150)
    slug = models.SlugField()
    text = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    up_vote = 0 # num of up votes
    down_vote = 0 #num of down votes
    vote_total = up_vote - down_vote
    author = models.ForeignKey('auth.User', null=True, blank=True)

    CHOICES = [
        ('Hardware and OS', 'Hardware and OS'),
        ('Desktops', 'Desktops'),
        ('Tablets', 'Tablets'),
        ('Phones', 'Phones'),
        ('Wearables', 'Wearables'),
        ('Windows', 'Windows'),
        ('Mac OS X', 'Mac OS X'),
        ('Linux and Unix', 'Linux and Unix'),
        ('Programming and Computer Science', 'Programming and Computer Science'),
        ('Software Development', 'Software Development'),
        ('Web Development (Front)', 'Web Development (Front)'),
        ('Web Development (Back)', 'Web Development (Back)'),
        ('Mobile Development', 'Mobile Development'),
        ('Game Development', 'Game Development'),
        ('Algorithms and Data Structures', 'Algorithms and Data Structures'),
        ('Databases', 'Databases'),
        ('IDE / Text Editors', 'IDE / Text Editors'),
        ('Tutorial', 'Tutorial'),
        ('Opinion', 'Opinion'),
        ('Miscellaneous', 'Miscellaneous')
    ]
    field = models.CharField(choices=CHOICES, max_length=200, default='Unspecified')

    def __unicode__(self):
        return self.title.encode('utf-8')

    @models.permalink
    def get_absolute_url(self):
        return ('blog_post_detail', (), 
                {
                    'slug' :self.slug,
                })

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.title)
        super(Post, self).save(*args, **kwargs)

Tags: andselfwebifosmodelsrequestdef
1条回答
网友
1楼 · 发布于 2024-06-01 08:56:03

正如错误所说,您正在传递一个字符串来过滤一个整数字段。(实际上它是一个外键,但它存储为一个整数ID。)

如果要筛选相关模型中的字段,则需要使用双下划线语法:

posts = Post.objects.filter(author__username=components[0])

还请注意,使用全局posts查询集是一个非常糟糕的主意,尤其是在您的视图中对其进行了变异时。所有请求都将看到同一个列表;一旦您按用户筛选了它,或将其反转,下一个请求将看到已修改的queryset。每次都应该删除全局变量并从头开始查询Posts模型。在

相关问题 更多 >