次の管理者設定を使用して、ユーザーとそのプロフィールを同時に追加/編集することができます。Django管理者はどのようにインライン化する必要がありますか?
class ProfileInline(admin.StackedInline):
"""
Allows profile to be added when creating user
"""
model = Profile
class UserProfileAdmin(admin.ModelAdmin):
"""
Options for the admin interface
"""
inlines = [ProfileInline]
list_display = ['edit_obj', 'name', 'username', 'email', 'is_active',
'last_login', 'delete_obj']
list_display_links = ['username']
list_filter = ['is_active']
fieldsets = (
(None, {
'fields': ('first_name', 'last_name', 'email', 'username',
'is_active', 'is_superuser')}),
)
ordering = ['last_name', 'first_name']
search_fields = ['first_name', 'last_name']
admin.site.register(User, UserProfileAdmin)
問題は、ユーザーを追加するときにプロファイルインラインフォームの2つのフィールドが必要になることです。入力がない限り、インラインフォームは検証されません。それは空白のままにすることができないように、インラインが必要なので、とにかくありますか?
'GenericInlineModelAdmin'を使用している場合は、' BaseInlineFormSet'を 'BaseGenericInlineFormSet'に置き換えてください。 – L42y
ありがとう!ただし、フォームに必須フィールドがない場合は、フィールドが空の場合は検証および保存されません。空でも保存するには、form.has_changed = lambda:Trueを使用してフォームをモンキーパッチします。 – bouke