django 특정 테이블을 읽어 User에 username과 password를 대입시켜서 저장하기

2023. 4. 9. 10:11django/Model

for 루프에서 데이터가 User 모델에 이미 존재하는지 확인하여, 존재하면 해당 데이터를 업데이트하고, 존재하지 않으면 새로운 데이터를 추가할 수 있습니다.

from django.contrib.auth.hashers import make_password

# MyModel의 데이터를 가져와서 User 모델에 저장
for data in MyModel.objects.all():
    try:
        # User 모델에서 username에 해당하는 데이터 가져오기
        user = User.objects.get(username=data.username)
        # username이 이미 존재하는 경우, password 등 업데이트
        user.password = make_password(data.password)
        # 필요한 필드를 모두 업데이트
        user.save()
    except User.DoesNotExist:
        # username이 존재하지 않는 경우, 새로운 데이터 추가
        user = User(
            username=data.username,
            password=make_password(data.password),
            # 필요한 필드를 모두 추가
        )
        user.save()
위의 코드에서는 try 문과 except 문을 사용하여, User 모델에서 username에 해당하는 데이터를 가져와서 데이터가 이미 존재하는지 확인합니다. User.DoesNotExist 예외가 발생하면, except 문에서 새로운 데이터를 추가합니다. 데이터가 이미 존재하는 경우에는 except 문에서 처리하지 않고, try 문 이후에 password 등 필요한 필드를 업데이트하고, save() 메서드를 사용하여 데이터를 저장합니다.