Настройка профиля пользователя в Django - PullRequest
0 голосов
/ 25 июня 2011

Я хотел бы добавить новые поля в профиле пользователя. Он работает на стороне admin , но не экономит на интерфейсе ... Это очень любопытно, потому что ошибки не отображаются, просто нужно сохранить.

В следующем коде я добавил поле «CPF» в userprofile. Он правильно отображается в форме внешнего интерфейса, а затем я пытаюсь сохранить его (здесь возникает некоторая проблема)

Я ценю любую помощь.

models.py

from django.db import models
from django.contrib.auth.models import User

...
cpf = models.CharField('CPF',max_length=14)
...

def __unicode__(self):
return self.cpf

forms.py

from django.contrib.auth.forms import UserCreationForm
from django import forms
from django.contrib.auth.models import User
from usuario.models import UserProfile


class cadastroForm(UserCreationForm):
...

cpf = forms.CharField(label='CPF')

class Meta:
    model = User
    fields = ("username", "cpf")


def save(self, commit=True):
    ...
    user.cpf = self.cleaned_data["cpf"]

    if commit:
        user.save()

    return user

views.py

def cadastro(request):
if request.method == 'POST':
    form = cadastroForm(request.POST)
    if form.is_valid():
        new_user = form.save()
        return HttpResponseRedirect("/")
else:
    form = cadastroForm()
return render_to_response("registration/registration.html", {
    'form': form,
})

admin.py (работает нормально, никаких изменений не требуется)

from django.contrib import admin
from usuario.models import UserProfile
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin as AuthUserAdmin

class UserProfileInline(admin.StackedInline):
model = UserProfile
max_num = 1
can_delete = False

class UserAdmin(AuthUserAdmin):
   inlines = [UserProfileInline]

admin.site.unregister(User)
admin.site.register(User, UserAdmin)

Ответы [ 2 ]

1 голос
/ 28 июня 2011

Проблема была в условном коммите, решение было:

        if commit:            
           user.save()
           profile.user = user
           profile.save()
0 голосов
/ 25 июня 2011

Трудно сказать, так как вы не опубликовали весь код. Можете ли вы опубликовать весь код, чтобы мы могли видеть, является ли это где-то опечаткой, и чтобы мы могли определить, какой пользователь есть в вашей модели.

Вы вызываете суперсохранение в методе сохранения вашей модели? Не могу вспомнить, требуется это или нет.

не настоящий код, просто пример

m = super (yourForm, self) .save ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...