다음과 같이 사용자 모델을 UserProfile 모델로 확장하고 있습니다.Python Django OneToOneField Nullable 값
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
TYPE0 = 0
TYPE1 = 1
PROFILE_TYPE_CHOICES = (
(TYPE0, "Old"),
(TYPE1, "New"),
)
profile_type = models.PositiveSmallIntegerField(choices=PROFILE_TYPE_CHOICES)
이 부분 코드는 오류없이 정상적으로 작동합니다.
You are trying to add a non-nullable field 'user_profile' to type0user without a default; we can't do that (the database needs something to populate existing rows).
내가 makemigrations
를하려고하면이 후
class Type0User(models.Model):
user_profile = models.OneToOneField(UserProfile, on_delete=models.CASCADE, primary_key=True)
을 UserProfile
모델을 확장하고자합니다.
아무도 왜 이런 일이 발생하고 어떻게 해결할 수 있는지 설명해주십시오. 또한 UserProfile
모델을 확장하는 동기는 Type0User
과 Type1User
에 대한 두 개의 개별 모델을 원하기 때문입니다. 나는 데이터베이스 디자인을 처음 사용하기 때문에, 내가 취하고있는 접근법이 최선의 방법이 아니라면 지적 해주십시오. 감사와 정말로 귀하의 도움과 조언을 주셔서 감사합니다!
안녕하세요, 귀하의 첫 번째 지점이 유효하다고 생각합니다. 해당 테이블에 행을 추가하지 않았습니다. 어쨌든 구형 모델을 완전히 덮어 쓸 수 있습니까? Type0User 모델이 훨씬 나중에 수정 되었기 때문입니다. 요점은, 실제로 내가하려는 일입니다. 두 개의 서로 다른 사용자 프로필은 고유 한 필드를 가질 것이므로 두 개의 별도 모델을 만들어 UserProfile 모델을 통해 User 모델에 연결해야합니다. 그게 합리적인 일인가요? – swdon
데이터베이스에서 데이터를 지우기 만하면됩니다. – navit
실제로 어떤 데이터도 볼 수 없기 때문에 문제가 발생합니다 ... – swdon