Django没有这样的列ForeignKey

时间:2017-05-29 13:43:40

标签: python django

我正在做一个Django项目(一种社交网络),并希望有一个页面,我可以看到我的所有帖子,我做了。

我总是得到错误:没有这样的专栏:uploaded_by

在models.py

from django.db import models
from django.contrib.auth.models import User

class ContentItem(models.Model):
    upload_date = models.DateTimeField(auto_now=True)
    title = models.CharField(max_length=100, default='no title')
    description = models.CharField(max_length=400, default='no description')
    image = models.ImageField(upload_to='image_board/posts/', default='null')
    uploaded_by = models.ForeignKey(User, default='0')

    def __str__(self):
        return self.title
在views.py中

def view_my_favorites(request):
    all_posts = ContentItem.objects.raw('SELECT * FROM image_board_ContentItem WHERE uploaded_by = request.user.username')
    template = loader.get_template('favorites.html')
    context = {
        'all_posts': all_posts,
    }
    return HttpResponse(template.render(context, request))

我想获取所有用户的用户名,如何在sql查询中将其设为?

Thaks guys :)

1 个答案:

答案 0 :(得分:1)

您的实际问题可能是由于在添加uploaded_by字段后忽略了制作和运行迁移。

但是这里还有很多其他问题。

首先,您要将uploaded_by列与不存在的列request.user.username进行比较。您需要使用该变量的实际

其次,您将外键 - uploaded_by - 与字符串username进行比较。这些永远不会匹配。

第三,您正在使用原始查询。这里绝对没有必要这样做。

您的查询在Django查询语法中表达是微不足道的。你应该这样做:

all_posts = ContentItem.filter(uploaded_by=request.user)

甚至更简单:

all_posts = request.user.contentitem_set.all()