I am working on project where I have taken django in backend. I have a model call profile which is related to the user. A profile model has more than 10 fields and when trying to update the user profile, my code for updating all those fields would be something like this
class UpdateProfile(graphene.Mutation):
class Arguments:
input = types.ProfileInput(required=True)
success = graphene.Boolean()
errors = graphene.List(graphene.String)
profile = graphene.Field(schema.ProfileNode)
@staticmethod
def mutate(self, info, **args):
is_authenticated = info.context.user.is_authenticated
data = args.get('input')
if not is_authenticated:
errors = ['unauthenticated']
return UpdateProfile(success=False, errors=errors)
else:
profile = Profile.objects.get(user=info.context.user)
profile = models.Profile.objects.get(profile=profile)
profile.career = data.get('career', None)
profile.payment_type = data.get('payment_type', None)
profile.expected_salary = data.get('expected_salary', None)
profile.full_name = data.get('full_name', None)
profile.age = data.get('age', None)
profile.city = data.get('city', None)
profile.address = data.get('address', None)
profile.name_of_company = data.get('name_of_company', None)
profile.job_title = data.get('job_title', None)
profile.zip_code = data.get('zip_code', None)
profile.slogan = data.get('slogan', None)
profile.bio = data.get('bio', None)
profile.website = data.get('website', None)
profile.github = data.get('github', None)
profile.linkedin = data.get('linkedin', None)
profile.twitter = data.get('twitter', None)
profile.facebook = data.get('facebook', None)
profile.image=info.context.FILES.get(data.get('image', None))
profile.save()
return UpdateProfile(profile=profile, success=True, errors=None)
so my question is, suppose, if there are even more than 20, 30 fields, how would you design your code on updating those fields? (considering only views part)
How do you know what "image" is? Where is it located?
RépondreSupprimer