راهنمایی درباره DRY در جنگو

سلام دوستان
من در حال نوشتن یک api با جنگو و رست فریمورک هستم و به ذهنم رسید که کد هارو جوری بنویسم که علاوه بر این که هر application این پروژه رو بعدا بتونم تو پروژه های بعدی که مشابه هستن با تغییرات کمی استفاده کنم،بتونم کد هارو جوری بنویسم که توی همین پروژه هم بتونم چندین جا استفاده کنم،حالا سوالی که برام پیش اومده اینه که آیا این کار بعدا توسعه دادن رو برای بقیه توسعه دهنده ها سخت نمیکنه؟
برای مثال تابع آپدیت override شده از model serializers در serializers.py هست که به این دو شکل معمولا دیدم مینویسن :‌

    email    = validated_data.pop('email')
    name     = validated_data.pop('name')
    family   = validated_data.pop('family')
    username = validated_data.pop('username')
    password = validated_data.pop('password')
    profile_pic = validated_data.pop('profile_pic')
    
    new_user.username = username
    new_user.family   = family
    new_user.name     = name
    new_user.email    = email
    new_user.profile_pic = profile_pic
    new_user.set_password(password)
    new_user.save()

    return new_user

صورت دوم اینجوریه که دیگه کمتر به اسم کلید های دیکشنری validated_data بستگی داره و میتونم توی تابع های دیگه مثل update برای همین model یا هر model دیگه ای تقریبا راحت استفاده کنم.به این صورت :

    try:
        new_user = User()
        for i in validated_data.keys():
            if hasattr(new_user,str(i)) and str(i) != 'password':
                setattr(User,str(i),validated_data.get(str(i)))
            elif hasattr(new_user,str(i)) and str(i) == 'password':
                print()
                new_user.set_password(validated_data.get('password'))
        
        new_user.save()
        return new_user
    
    except Exception as e:
        print("fom create:", e)
        return None

آیا به این شکل نوشتن فقط کار رو برای خودم آسون میکنه و بعدا برای بقیه و حتی شاید خودم مشکل ساز میشه؟
در کل آیا کار درستیه؟ممنون.