2012-03-06 16 views
0

こんにちは私は比較的新しいDjangoです。私は、ユーザーがimagegallriesをアップロードすることを可能にするアプリケーションを、作成しています:DjangoアップロードモデルForeignkey

私のモデルの重要な部分は、次のようになります。

def myFileHandler(request): 
    if request.method == 'POST': 
     for field_name in request.FILES: 
      loc = request.POST['location'] 
      date = request.POST['date'] 
      if location.objects.filter(name=str(loc)): 
       for l in location.objects.filter(name=str(loc)): 
        id = l.id 
      gal = gallery(location_id=1, date='12/23/2009') 
      gal.save() 
     return HttpResponse("ok", mimetype="text/plain") 
    else: 
     return render_to_response('gallery_upload.html', context_instance=RequestContext(request)) 

追加:

class location(models.Model): 
    name = models.CharField(max_length = 15) 

class gallery(models.Model): 
    location_id = models.ForeignKey(location) 
    date = models.CharField(max_length = 15) 

class Image(models.Model): 
    location_id = models.ForeignKey(location) 
    name = models.CharField(max_length=15) 
    image = ImageField(upload_to='songs') 

class AuthKey(models.Model): 
    user = models.OneToOneField(User) 
    key = models.CharField(max_length=60) 

私の見解は次のようになります投稿データ(loc/date)はuploadifyを介して送信されます。すべて正常に動作しますが、モデル "gal"を保存しようとすると動作しません。私がギャラリーモデルではなくロケーションモデルでテストすれば、それは機能します。ギャラリーモデルから外部キーを削除しても機能するので、外部キーフィールドに問題があるようです。私は皆さんのうちの一人がこれを解決することを願っています。

+1

まず、CamelCaseで常にクラスに名前を付けます。つまり、 'Location'ではなく' location'です。次に、外部キーに "foo_id"という名前を付けないでください。 Djangoは自動的にデータベースのフィールド名に "_id"を追加するので、実際は "foo_id_id"で終わります。 –

答えて

0

使用あなたが実際にIDが、オブジェクトではありませんlocation_idの提出をめちゃくちゃ取得するように見える

gal = Gallery.objects.create(location=location, date='12/12/2012') 

代わりの

gal = gallery(location_id=1, date='12/23/2009') 
gal.save() 

+0

@Chris Patt:そうです。今それは動作します。愚かな初心者は間違います。 – jarred

+0

あなたのソリューションは機能しますが、モデル保存メソッドを上書きしましたので、呼び出す必要があります。 – jarred

関連する問題