1
응용 프로그램과 관련된 특성을 가진 사용자 모델을 확장하고 싶습니다.이 경우 단순히 extA
과 extB
으로 대체합니다. 사용자 모델을 확장하기위한 모델을 만들었고 그 모델에 대한 간단한 serializer를 만들었습니다. 이제 추가 필드가있는 사용자를 만드는 방법을 모르겠습니다. 내가왔다장고 Rest 프레임 워크 사용자 모델 확장 방법, 사용자 생성 방법
class UserDetailsSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'email', 'extA', 'extB')
views.py
class UserDetailsView(APIView):
def get(self, request, id, format=None):
data = User.objects.get(id)
serializer_class = UserDetailsSerializer
return Response(serializer_class.data)
models.py
class UserDetails(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
extA = models.IntegerField(null=True)
extB = models.IntegerField(null=True)
@receiver(post_save, sender=User)
def handle_user_save(sender, instance, created, **kwargs):
if created:
UserDetails.objects.create(user=instance)
serializers.py 셸을 통해 사용자를 생성합니다. 이처럼 : user = User.objects.create_user('John', '[email protected]', 'pass')
. 이것은 잘 작동하지만 나는 UserDetailsView
객체를 생성하고 저장하는 방법을 모르겠습니다.
:
실행 이 명령은 내가 얻는 쉘에서 :'IntegrityError : UNIQUE constraint failed : app_userdetails.user_id'. 그 원인을 알 수 있습니까? – Warosaurus
제공하는 ID가 이미 있음을 나타냅니다. UserDetails.objects.get (id = id) .delete()로 삭제하거나 거기에없는 ID를 제공하십시오. – dmitryro