Найти - Пользователи
Полная версия: Сохранение в БД полей типа Foreign Key
Начало » Django » Сохранение в БД полей типа Foreign Key
1
lyapun
Здраствуйте!

Есть модели:

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 лишних запросов к БД.

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

Спасибо!
ziro
Попробуйте так:

entry = Vote(poll_id = int(poll_id), candidate_id = int(str), place = i, user = request.user)
На старых версиях джанги проходило, но на 100% не уверен.
lyapun
Работает, спасибо большое!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB