2012-04-05 3 views
0

Я новичок в FanDjango и пытаюсь что-то понять. У меня все налажено и работает красиво, и я могу полюбить request.facebook.user и получить информацию.Подключить fandjango (Facebook django) к Django Пользователь, чтобы добавить атрибуты

Но теперь я хочу разработать приложение, которое имеет больше информации, чем только Facebook дает мне о каждом пользователе. Например, я хочу сохранить вверх/вниз голосов, которые у этого пользователя есть режим на других объектах (т. Е. Отношения). Я хочу сохранить пользовательские настройки. Etc ... Стандартным «Django Way» является использование профиля пользователя, но я не знаю, как подключить пользователя FanDjango к профилю пользователя.

Непонятно, как это сделать.

Я изучил django-facebook перед fandjango, и я не мог заставить его работать, поэтому я перешел к этому. Что они делают, они позволяют вашему профилю пользователя наследовать их определение пользователя. Могут ли такие же вещи работать здесь, или я должен делать что-то другое?

Благодаря

ответ

2

Ну вы можете просто создать 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 %} и т.д.

отредактирован ADD:

Дополнительные подробности приведены здесь: https://github.com/jgorset/fandjango/issues/63#issuecomment-4988917

Тогда я просто слушаю для post_save сигнала «Fandjango.models.User» и когда параметр «создан» установлен, я экземпляр профиля модель.

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

Да, это, вероятно, подход, который я возьму. Это действительно проблема потери django.contrib.auth, если я приложение для Facebook, и у вас будут только пользователи Facebook? –

+1

Это то, что некоторые пользователи GitHub проекта ответили на тот же вопрос, и был подтвержден автором FanDjango как правильный подход. См. Https://github.com/jgorset/fandjango/issues/63#issuecomment-4988917 –