2013-07-11 6 views
0

Я получил это далеко от UserProfiles на Django 1.4.5. Он работает, но теперь я хотел бы иметь возможность добавить значение в мое настраиваемое поле в admin при создании пользователя. Как это работает, мне нужно создать нового пользователя, а затем вернуться и добавить поле UserProfile.Добавление значения поля UserProfile при создании пользователя

Где и что мне нужно сделать, чтобы добавить поле UserProfile при создании пользователя?

### admin.py 
class UserProfileInline(admin.StackedInline): 
    model = UserProfile 
    can_delete = False 
    verbose_name_plural = 'profile' 


# Define a new User admin 
class UserAdmin(UserAdmin): 
    inlines = (UserProfileInline,) 

    # Something here? 


    # Re-register UserAdmin 
    admin.site.unregister(User) 
    admin.site.register(User, UserAdmin) 



### models.py 
    class UserProfile(models.Model): 
    """Create additional fields for users. 

    Site ID 

    """ 
    # This field is required 
    user = models.OneToOneField(User) 

    # Additional fields to add. 
    site_id = models.IntegerField(null=True, blank=True, verbose_name='Site ID') 


def create_user_profile(sender, instance, created, **kwargs): 
    if created: 
     UserProfile.objects.create(user=instance) 

     # Or maybe here? 

post_save.connect(create_user_profile, sender=User) 
+0

у вас есть сигнал post_save правильно. Он должен создать профиль при создании пользовательского объекта. В чем проблема, с которой вы столкнулись? – karthikr

+0

Вышеупомянутый создает пустой UserProfile для вновь созданного пользователя. Я хочу заполнить идентификатор сайта во время создания пользователя. Попытка с вышесказанным создает «текущую транзакцию прерывается, команды игнорируются до конца транзакции». Конечно, вполне возможно, что я лаяю неправильное дерево, думая, что Django - моя проблема. – duffn

+0

Вы можете сделать 'userprofile = UserProfile.objects.create (user = instance); userprofile.site_id = ID; userprofile.save() ' – karthikr

ответ

Смежные вопросы