2011-12-26 9 views
0

Djangoに複数の画像が関連付けられているモデルを用意したいと思います。私は可能なオプションを評価しています。Djangoモデルの非モデルフィールド

models.ImageField(...)で1つのモデルの画像を簡単に作成できます。

しかし、写真の配列(またはセット)が必要です。これは単なるパスであり、必ずしもImageFieldオブジェクトである必要はありません。

問題は、どのようにしてDjangoモデルでそのフィールドを作成するのですか? models.WhateverFieldの一部ではないフィールドを作成する必要があると仮定しています。それは可能ですか?私は、次のような、非モデルフィールドを定義することができます。

class MyModel: 
    name = models.CharField(max_length=10) 
    picture_list = [] 

してから実行します。

def sample_add_picture_view(request): 
    picture = "sample.jpg" 

    model = MyModel.objects.get(id=sample_id) 
    model.picture_list.append(picture) 
    model.save() 

    return HttpResponseRedirect('index.html') 

はこれを行うことができますか?そうでない場合、より良い解決策は何でしょうか?ありがとうございました !

答えて

4

次の2つの別々のモデルを作成し、そのように、ForeignKeyのフィールドでそれらをリンクする必要があります。

class Item(models.Model): 
    name = models.CharField(max_length=255) 

class ItemImage(models.Model): 
    image = models.ImageField(upload_to="item_images") 
    item = models.ForeignKey('Item', related_name="images") 

複数の項目を格納するためのカスタムフィールドを作成することが可能であるが、それは本当に悪い考えです。配列をデータベースにシリアライズしなければならず、メンテナンスが非常に難しくなります。別のモデルを使用すると、アップロード時間や画像キャプションなどの余分な情報をわずかな労力で保存することができます。

関連する問題