2017-05-29 21 views
-1

私はDjangoプロジェクト(ソーシャルネットワークの一種)をやっていて、自分の投稿をすべて見ることができるページを作りたいと思っています。Django no such Column ForeignKey

私はオールウェイズエラーを取得:いいえ、そのような列を:models.py 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)) 

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 

uploaded_by私はのユーザー名を取得したいですログインしているユーザーは、どのように私はSQLクエリでこれをwhriteできますか?

Thaksみんな:)

+1

は、なぜあなたは '最初の場所でraw'クエリを使用していますか? – errata

+0

rawクエリについてはわかりませんが、標準のdjangoのようにall_postsを取得することを検討しましたか?raw_sqlを使用するのではなく、all_posts = ContentItem.objects.get(user = request.user)?あなたの理由は何であれ、チェックアウトする価値はありますか?おそらくあなたのモデルは同期していません;データベースにdしてmanage.pyの移行をするだけです – jnvilo

答えて

1

はあなたの実際の問題は、おそらくuploaded_byフィールドを追加した後、マイグレーションを作り、実行するために無視することによって引き起こされます。

しかし、他にも数多くの問題があります。

最初に、uploaded_by列と存在しない列であるrequest.user.usernameを比較しています。その変数の実際のを使用する必要があります。

第2に、外部キー - uploaded_by - を文字列、usernameと比較しています。これらは決して一致しません。

第3に、生のクエリを使用しています。ここでそれを行う必要は全くありません。

あなたのクエリは、Djangoクエリ構文で表現するのは簡単です。あなたは実行する必要があります。

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

またはさらに簡単:

all_posts = request.user.contentitem_set.all() 
+0

ありがとう、それは動作します:) ちょっと変更しました: all_posts = ContentItem.objects.filter(uploaded_by = request.user) –

関連する問題