django.contrib.auth.models.User
에서 first_name
과 last_name
필드는 모두 blank=True
입니다. 나만의 모델에서 어떻게 그들을 blank=False, null=False
로 만들 수 있습니까? 여기 Django에서 first_name과 last_name을 요구 사용자 모델
python manage.py shell
에서 테스트 할 때 그러나
models.py
class Fellow(models.Model):
user = models.OneToOneField(
User,
on_delete=models.CASCADE
)
first_name = models.CharField(
_("first_name"),
max_length=30,
)
last_name = models.CharField(
_("last_name"),
max_length=30,
)
# other fields omitted
from . import signals
signals.py
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
from .models import Fellow
@receiver(post_save, sender=User)
def create_fellow_on_user_create(sender, instance, created, **kwargs):
if created:
Fellow.objects.create(user=instance)
, 오류가 발생했습니다 :
>>> f = Fellow.objects.create(username='username', password='passwd')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/sunqingyao/Envs/django_tutorial/lib/python3.6/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/Users/sunqingyao/Envs/django_tutorial/lib/python3.6/site-packages/django/db/models/query.py", line 392, in create
obj = self.model(**kwargs)
File "/Users/sunqingyao/Envs/django_tutorial/lib/python3.6/site-packages/django/db/models/base.py", line 571, in __init__
raise TypeError("'%s' is an invalid keyword argument for this function" % list(kwargs)[0])
TypeError: 'username' is an invalid keyword argument for this function
원래 User 클래스에서 모델을 파생해야합니다. –
@KlausD. 'User'를 서브 클래 싱하는 것이 무엇입니까? 그러나 문서의 예제 코드는'class Employee (User) :'... 대신에'class Employee (models.Model) :'을 작성합니다 ... –
@KlausD. 이렇게하면 다음과 같은 에러가 발생합니다 :'django.core.exceptions.FieldError : 'Fellow'클래스의 로컬 필드 'first_name'이 기본 클래스 'User'와 같은 이름의 필드와 충돌합니다 .' –