Доступ к объекту запроса из form.save - PullRequest
4 голосов
/ 08 января 2010

Я использую модуль pyfacebook для Django для реализации Facebook Connect для одного из моих сайтов, я не использую локальный объект User, потому что я хочу использовать Facebook только для входа в систему.

Я понимаю, что не могу получить доступ к объекту запроса из метода save в форме Django, так как я могу получить доступ к объекту facebook, который предоставляет вам промежуточное ПО?

Я хочу прикрепить пользовательский UID facebook к объекту, создаваемому из формы, я мог бы добавить его как скрытое поле в форму, но тогда люди могли бы просто изменить его, чтобы показалось, что вопрос от кого-то другого.

Как лучше всего передать этот uid в метод save ()?

Ответы [ 2 ]

2 голосов
/ 09 января 2010

Правильный способ сделать это - использовать экземпляр объекта, который вы пытаетесь сохранить, например:

question = Question(user=int(request.facebook.uid))
form = QuestionForm(request.POST, instance=question)
question = form.save()
question.put()

Делайте это, по вашему мнению, НЕ в методе save () вашего объекта.

Будьте внимательны, если какое-либо из полей является обязательным, вам нужно будет указать их в экземпляре объекта, вызывающего объект.

2 голосов
/ 08 января 2010

Вы можете установить переменную в форме при ее создании.

views.py

def myview(request):
    form = FacebookConnectForm(request)

forms.py

class FacebookConnectForm(forms.Form):
    def __init__(self, instance):
        self.instance = instance

    def save(self):
        print self.instance
        ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...