Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 4, 2011 00:01:46

lyapun
От:
Зарегистрирован: 2011-01-25
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Сохранение в БД полей типа Foreign Key

Здраствуйте!

Есть модели:

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

class Candidate (models.Model):
poll = models.ManyToManyField (Poll)
surname = models.CharField (max_length='255')

class Vote (models.Model):
poll = models.ForeignKey (Poll)
candidate = models.ForeignKey (Candidate)
place = models.IntegerField ()
user = models.ForeignKey (User)
Пытаюсь сохранить запись таким образом:

entry = Vote(poll = int(poll_id), candidate = int(str), place = i, user = request.user.id )
entry.save()
Получаю ошибку:
Cannot assign “1”: “Vote.poll” must be a “Poll” instance.

Если сделать так:

entry = Vote(poll=Poll.objects.filter(id=int(poll_id))[0], candidate=Candidate.objects.filter(id=int(str))[0], 
place = i, user = User.objects.filter(id=int(request.user.id))[0] )
entry.save()
То все ОК, но это в итоге - около 60 лишних запросов к БД.

Судя по всему я что-то упустил. Не подскажете как сделать правильно?

Спасибо!



Отредактировано (Фев. 4, 2011 00:02:37)

Офлайн

#2 Фев. 4, 2011 13:22:01

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

Сохранение в БД полей типа Foreign Key

Попробуйте так:

entry = Vote(poll_id = int(poll_id), candidate_id = int(str), place = i, user = request.user)
На старых версиях джанги проходило, но на 100% не уверен.



Офлайн

#3 Фев. 4, 2011 15:03:46

lyapun
От:
Зарегистрирован: 2011-01-25
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Сохранение в БД полей типа Foreign Key

Работает, спасибо большое!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version