Я получил это далеко от 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)
у вас есть сигнал post_save правильно. Он должен создать профиль при создании пользовательского объекта. В чем проблема, с которой вы столкнулись? – karthikr
Вышеупомянутый создает пустой UserProfile для вновь созданного пользователя. Я хочу заполнить идентификатор сайта во время создания пользователя. Попытка с вышесказанным создает «текущую транзакцию прерывается, команды игнорируются до конца транзакции». Конечно, вполне возможно, что я лаяю неправильное дерево, думая, что Django - моя проблема. – duffn
Вы можете сделать 'userprofile = UserProfile.objects.create (user = instance); userprofile.site_id = ID; userprofile.save() ' – karthikr