Как сохранить модель Django из request.POST? - PullRequest
1 голос
/ 24 октября 2010

Я пытаюсь сохранить новый объект из модели django, используя запрос данных POST. Это часть обработчика PISTON. Я видел это в многочисленных примерах, но просто не могу заставить его работать.

Вот мой код:

class FestHandler(BaseHandler):
    model = Deal

    def create(self, request):
        """
        Creates a new fest.
        """
        attrs = self.flatten_dict(request.POST)
        postcopy = request.POST.copy()
        if self.exists(**attrs):
            return rc.DUPLICATE_ENTRY
        else:
            loc = Location.objects.get(pk=attrs['location'])
            postcopy['location'] = loc
            fest = Fest(postcopy)
            fest.save()
            return fest

Вот ошибка, которую я получаю каждый раз:
Exception was: int() argument must be a string or a number, not 'QueryDict'

Я понимаю, что означает ошибка, поэтому в основном я спрашиваю, как я могу сохранить новый "Fest", передавая весь словарь POST без необходимости каждый раз вводить ключи вручную, как показано ниже:

loc = Location.objects.get(pk=attrs['location'])
fest = Fest(
    location=loc,
    name=attrs['name'],
    description=attrs['description'],
    details=attrs['details'],
)

Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 24 октября 2010

Во-первых, я думаю, вы будете счастливее, если вы явно превратите свои ПК в целые числа.

        loc = Location.objects.get(pk=int(attrs['location']))

Во-вторых, вы должны использовать форму.

  1. Проверяет поля для вас.

  2. Создает объект Model из объекта Form.

Прочтите это. http://docs.djangoproject.com/en/1.2/topics/forms/modelforms/

...