2012-04-18 23 views
5

おはようございます、Djangoでユーザープロフィールを拡張しています。ユーザーの管理者の作成

私は現在Djangoでサイトを作成しており、ユーザープロファイルを使用してユーザーを拡張しました。私は少し問題がある。ここに私の状況です:

  1. 私はカスタムフィールドを追加するためにユーザープロファイルを拡張しました。
  2. モデルをUser Admin Modelに追加したので、ユーザーを追加するときに、フィールドを直接入力してプロファイルを作成することができます。
  3. これらの新しいカスタムユーザフィールドに何も追加しないと、ユーザ追加ページで、Django Adminはこれらのフィールドがnullであるとエラーメッセージを表示しません。
  4. この「ユーザー管理者の追加」ページでエラーが表示されるので、管理者は新しいユーザーを追加するときにプロファイルを入力する必要があります。
  5. すべてのユーザーが管理パネルに追加されます。

これは可能ですか?どうもありがとう!デフォルトで

admin.pyで

from django.contrib import admin 
from django.contrib.auth.admin import UserAdmin as DjangoUserAdmin 
from django.contrib.auth.models import User 
from accounts.models import UserProfile 


class UserProfileInline(admin.TabularInline): 
    model = UserProfile 


class UserAdmin(DjangoUserAdmin): 
    inlines = [ UserProfileInline,] 


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

model.py

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    employee_number = models.PositiveIntegerField(unique=True) 

    def __unicode__(self): 
     return 'Number' 

答えて

5

、空のインラインが許可され、従って、さらなるチェックが空のフォームのためにとられないであろう。手動で上書きする必要があります:

class UserProfileForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(UserProfileForm, self).__init__(*args, **kwargs) 
     if self.instance.pk is None: 
      self.empty_permitted = False # Here 

    class Meta: 
     model = UserProfile 


class UserProfileInline(admin.TabularInline):   
    model = UserProfile        
    form = UserProfileForm 
+0

ニースは機能しました。コードが何をしているのか少し説明してもらえますか?特にクラスメタ:パート!ありがとうございます。 – abisson

+0

また、フィールドのうちの1つだけをempty_permitted = falseにしたい場合、構文はどうなりますか?残りの部分は真実ですか? – abisson

+0

@abisson 'empty_permitted'は' BaseForm'が受け入れる文書化されていないパラメータです:送信されたフォームが初期データから変更されておらず、 'empty_permitted'が' True'なら、フォームの 'full_clean()'は実行しませんそれ以上の検証。 'django/forms/forms.py'と' django/forms/formsets.py'で 'empty_permitted'をチェックできます。フィールドの1つを空にしたくない場合は、フォームの 'empty_permitted = True'と他のフィールドの' blank = True'を設定しようとすることができます。 – okm

関連する問題