2017-03-13 11 views
0

私は2つのモデルを持っています.1つはMyProfile、もう1つは売り物です。私の見解でDjangoモデルインスタンスが既に保存された後にアクセスするには?

私は販売のためのアイテムを作成しようとしていますが、私はマイプロファイルへのForeignKeyである著者が(設定したときに、私はエラーを取得します。

views.py

active_user = MyProfile.objects.filter(user=david) 
    form.author = active_user 

エラー

ValueError: Cannot assign "<QuerySet [<MyProfile: david test test None>]>": 
"Entry.author" must be a "MyProfile" instance. 

私はここでの問題は。だから私の質問は、私はオブジェクトを渡すんどのようにされて、私はform.authorするマイプロファイルのインスタンスを渡すためにしようとしていますが、代わりに、私はクエリセットを渡していますということであると思いますか?

私はdjangoのプロジェクトに取り組んでおり、djangoのユーザーモデルを完全にバイパスしようとしていますので、これを覚えておいてください。私は含まれているdjangoユーザーモデルを使用しようとしていない、私は、これがForeignKeyフィールドであるため、form.authorにMyProfileインスタンスを渡すための解決策であることを理解しようとしている。

私はrequest.session経由で渡すことができると思っていましたが、このオブジェクトのシリアライズに関するエラーが発生しました。

答えて

1
あなたは一つだけ返す、というよりも get、すべての結果のリストを返す filterを、使用している

:外部キーフィールドがマイプロファイルではなく、リストのインスタンスを期待している

active_user = MyProfile.objects.get(user=david) 

。結果が見つからない場合は、MyProfile.DoesNotExist例外が発生することに注意してください。

これはフィルタリングと同じものについてです、ちょうど最初の要素グラブ:

active_user = MyProfile.objects.filter(user=david)[0] 
# OR 
active_user = MyProfile.objects.filter(user=david).first() 
関連する問題