Erabiltzaile inprimaki berria zabalduz, Django administratzailean

Erabiltzailearentzako eremu gehigarri bat gehitu dut Erabiltzailearen Profila aplikazioa egiteko prozesu osoa eginez eta Erabiltzaile modulua luzatuz.

Ez dirudi akatsa duenik. Aurkitu edo aurkitu ezin dudana da nola erakutsi eremu berri hau administratzaileak erabiltzaile berria sortzen duen orrian. Beraz, izena eta abizena bezalako informazio pertsonalaren arabera, Erabiltzailearen profilean gehitu ditudan kokapen eremua izatea nahi dut.

Nire Erabiltzaile profila:

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

class UserProfile(models.Model):
    # This field is required.
    user = models.OneToOneField(User)

    # Other fields here
    location = models.CharField(max_length=20)

# definition of UserProfile from above
# ...

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

post_save.connect(create_user_profile, sender=User)

Era berean, posta elektronikoa derrigorrez nola egin jakin nahi nuke, pasahitza bezala eta erabiltzaile izena. Django karpetako erabiltzaile eredua honela aldatzeak:

 email = models.EmailField(_('e-mail address'), unique=True)

ez du batere funtzionatu.

[EGUNERATZEA] Hau da nik sortutako nire admin.py kapela. Non sartu behar dut hau settings.py fitxategian, gehitutako erabiltzaile moduluarekin eta inprimaki berriarekin karpeta benetan erabil dezan? Lerro hau daukat baina ez dirudi inprimaki berria erabiltzen duenik AUTH_PROFILE_MODULE = 'ErabiltzaileProfila.ErabiltzaileProfila' (ErabiltzaileProfila izeneko karpeta bat daukat, bi kode zatiak biltzen dituena)

from django.contrib import admin
from django.contrib.auth.models import User,Group
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from django import forms
from django.contrib.admin.views.main import *

class MyUserCreationForm(UserCreationForm):
    """
    A form that creates a user, with no privileges, from the given username and password.
    """
    OFFICES = (
        (0, "Global"),
        (1, "Dublin"),
        (2, "Tokyo"),
        (3, "Warsaw"),
        (4, "Beijing"),
        (5, "Seoul"),
        (6, "Taipei"),
        (7, "Orem"),
        (8, "Mountain View"),
        (9, "San Luis Obispo"),
        (10, "Roseville"),
        (11, "Pune"),
        (12, "i18n")
    )
    username = forms.RegexField(label=_("Username"), max_length=30, regex=r'^[\w.@+-]+$',
        help_text = _("Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."),
        error_messages = {'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")})
    password1 = forms.CharField(label=_("Password"), widget=forms.PasswordInput)
    password2 = forms.CharField(label=_("Password confirmation"), widget=forms.PasswordInput,
        help_text = _("Enter the same password as above, for verification."))
    location = forms.IntegerField(label=_("Location"), choices=TYPE_CHOICES)

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

    def clean_username(self):
        username = self.cleaned_data["username"]
        try:
            User.objects.get(username=username)
        except User.DoesNotExist:
            return username
        raise forms.ValidationError(_("A user with that username already exists."))

    def clean_password2(self):
        password1 = self.cleaned_data.get("password1", "")
        password2 = self.cleaned_data["password2"]
        if password1 != password2:
            raise forms.ValidationError(_("The two password fields didn't match."))
        return password2

    def save(self, commit=True):
        user = super(UserCreationForm, self).save(commit=False)
        user.set_password(self.cleaned_data["password1"])
        if commit:
            user.save()
        return user


class CustomUserAdmin(UserAdmin):
    add_form = MyUserCreationForm
    inlines = [ProfileInline,]
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'email', 'password1', 'password2', 'location')}
        ),
    )


admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
admin.site.register(Class, ClassAdmin)
6
задан Angie 3 August 2011 в 09:02
поделиться