2
モデルのonetonefieldを使ってdjangoユーザー認証を拡張しようとしています。モデルは次のとおりです。ModelAdminのカスタムフィールドに初期値を割り当てる方法は?
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
nim = models.CharField(max_length=10, blank=True)
def __str__(self):
return self.user.username
基本的な管理パネルでは、まずユーザーインスタンスを作成してからプロファイルを作成します。しかし、私はので、私は1 form.Thisにそれを作成することができ、管理パネルにカスタムフォームを使用するには、フォームが見ている:
これはforms.py
from django import forms
from django.contrib.auth.models import User
from .models import Profile
class ProfileForm(forms.ModelForm):
username = forms.CharField(required=False, max_length=150)
password = forms.CharField(required=False, max_length=50, widget=forms.PasswordInput)
class Meta:
model = Profile
fields = ('username', 'password', 'nim')
であり、これはadmin.pyです
これですべてのプロファイルインスタンスを作成できます。しかし、プロファイルを変更/編集しようとすると、ユーザー名とパスワードのフィールドの初期値が表示されませんでした。
empty username and password field
あなたの助け
それは、 return profileadminには属性userはありません。 –
oops:the_user = User.objects.filter(pk = Profile.user.pk) –
form.fieldsはProfileFormが属性フィールドを持たないという属性エラーを発生させます。 form.base_fieldsは私のために働きます。ありがとうございました –