2017-04-07 5 views
0

私はモデルを作成しています。ここでは、ユーザーが自分のプロファイルに多くの画像を追加できます。私はそうのようなイメージのモデルを使用して考えられてきました:誰かが彼らのImageすべてのオブジェクトが表示されます。そして、彼らのUserProfileを訪れるとDjango - UserProfileモデルの1つのフィールドに複数の画像/データを追加

class Image(models.Model): 
    related_profile = models.ForeignKey(UserProfile) # UserProfile is the name of the model class 
    user_picture = models.ImageField(upload_to=get_user_img, blank=True, null=True, height_field='height_field', width_field='width_field') 

。ただし、を編集したい場合(画像を1つまたは2つ削除するなど)はできません。対照的に、ここで)(取得する)

get() returned more than one Image -- it returned 2!

フィルタを(示唆された。このような同様の質問がありますdjango - get() returned more than one topic を: 「インスタンスは、」私はエラーを取得するよう編集する複数のImageオブジェクトを返すように望んでいませんこれはManyToMany関係を使用していますが、解決策は私のエラーでは機能しませんでした。

誰かがこれを再構成する良い方法を知っているので、同じページから各モデルオブジェクトを編集することができます(上記のエラーを返さないようにします)?

タイトルのように、UserProfileモデルの1つのフィールドに画像のセットをリストとして保存することが可能かどうかは疑問です。

答えて

0

あなたは正しい方向にあります。 Model.objects.get()メソッドでは、クエリ結果が1つの行(インスタンス)であると予想され、次に返されます。しかし、あなたのケースでは、UserProfileは任意の数の関連するImageを持つことができます。したがって、クエリから戻ってくる(おそらく)複数の結果を繰り返し処理し、それぞれで何かを行う必要があります。その他のような:

# there is only ONE UserProfile per userid.. that is to say, userid is a 
# unique key.. so I can use get() to fetch it 

profile = UserProfile.objects.get(userid=the_userid) 

# now I need to get each image 
for image in Image.objects.filter(user_profile=profile): 
    # do something with image.... 

あなただけのイメージのインスタンスが必要とのUserProfileインスタンスを必要としない、あなたが参加して、これを短縮することができる場合:私は、これはに何も持っていないことを追加する必要があります

for image in Image.objects.filter(user_profile__userid=the_userid): 
    # do something with image.... 

イメージで処理しますが、Djangoを使用してデータベースからデータを取得するときはいつでも適用されます。このように複数の行を持つクエリを実行する必要があります。

関連する問題