将fandjango(Facebook django)用户连接到Django用户添加属性

问题描述:

我是FanDjango的新手,并试图理解某些内容。我已经完成了所有工作,并且工作得非常好,并且我可以提出request.facebook.user并获取信息。将fandjango(Facebook django)用户连接到Django用户添加属性

但是现在,我想开发一个应用程序,它拥有的信息不仅仅是Facebook给我的每个用户。例如,我想存储该用户对其他对象(即关系)具有模式的投票。我想存储用户设置。等等...标准的“Django方式”是使用用户配置文件,但我不知道如何将FanDjango的用户连接到用户配置文件。

我不清楚如何做到这一点。

我在fandjango之前查看了django-facebook,我无法得到它的工作,这就是为什么我搬到这。他们所做的是,它们允许用户配置文件继承其用户定义。同一种事情可以在这里工作,还是我应该做一些不同的事情?

感谢

那么你可以简单地创建一个Profile模型,并给它一个OneToOneField指向Fandjango轮廓

class Profile(models.Model): 
    facebook_user = models.OneToOneField("fandjango.User") 
    votes = ... 

,这将让你得到给定的资料,反之亦然的Fandjango简介:

request.facebook.user.profile 

和反向:

profile.facebook_user 

这个的问题是,因为你不使用django.contrib.auth可言,你没有得到任何这是不错的功能,如能够使用{% if user.is_authenticated %}

编辑补充:

额外的细节提供在这里:https://github.com/jgorset/fandjango/issues/63#issuecomment-4988917

然后我听的“Fandjango.models.User” 的post_save信号,并在“创建”参数设置,我实例化档案 模型。

@receiver(post_save, sender=User) 
def profile_creation(sender, instance, created, **kwargs): 
    if created: 
     profile, created = Profile.objects.get_or_create(user=instance) 
+0

是的,这可能是我会采取的做法。如果我是Facebook应用程序,并且只有Facebook用户,是否真的会失去django.contrib.auth的问题? – 2012-04-05 14:04:02

+1

这是项目的GitHub上的一些用户对同一个问题的回答,并被FanDjango的作者确认为正确的方法。参见:https://github.com/jgorset/fandjango/issues/63#issuecomment-4988917 – 2012-04-07 08:17:26