我正在使用Django的pyfacebook模块为我的一个网站实现Facebook Connect,我没有使用本地User对象,因为我只想使用Facebook登录。
据我所知,我无法从Django表单上的save方法访问请求对象,那么如何访问提供的中间件给你的facebook对象呢?
我想将用户facebook UID附加到从表单创建的对象,我可以将其作为隐藏字段添加到表单中,但是人们可以更改它以使其看起来来自其他人的问题。
将此uid传递给save()方法的最佳方法是什么?
答案 0 :(得分:2)
您可以在创建表单时在表单上设置变量。
def myview(request):
form = FacebookConnectForm(request)
class FacebookConnectForm(forms.Form):
def __init__(self, instance):
self.instance = instance
def save(self):
print self.instance
...
答案 1 :(得分:2)
执行此操作的正确方法是使用您要保存的对象的实例,如下所示:
question = Question(user=int(request.facebook.uid))
form = QuestionForm(request.POST, instance=question)
question = form.save()
question.put()
在您的视图中执行此操作,而不是在对象的save()方法中执行此操作。
注意是否需要任何字段,你必须在实例对象中指定它们,调用form.save会抛出异常。