2012-03-06 9 views
0

Привет Я относительно новичок в Django. Я создаю приложение, которое позволяет пользователям загружать imagegallries:Django uploadify Model Foreignkey

важная часть моих моделей выглядит следующим образом:

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) 

мой взгляд выглядит следующим образом:

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)) 

дополнительный данные отправления (loc/date) отправляются через uploadify. Все работает нормально, но когда я пытаюсь сохранить модель «gal», она не работает. Если я тестирую его с моделью местоположения, а не с моделью галереи, он работает. Если я удалю внешний ключ из модели галереи, он также будет работать, поэтому это проблема с полем внешнего ключа. Надеюсь, у одного из вас есть решение для этого.

+1

Во-первых, всегда называйте классы в CamelCase, то есть 'Location' не' location'. Во-вторых, не называйте внешние ключи «foo_id». Django автоматически добавляет «_id» к имени поля в базе данных, поэтому на самом деле вы получаете «foo_id_id». –

ответ

0

Использование

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

вместо

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

Вы, кажется, чтобы получить перепутались с LOCATION_ID поданном который не является на самом деле идентификатор, но объект.

+0

@ Крис Патт: Ты прав. Теперь это работает. Глупые ошибки начинающих. – jarred

+0

Ваше решение работает, но я перезаписал метод сохранения моделей, поэтому мне нужно его вызвать. – jarred