我正在进行一个项目,我在后端使用了django。我有一个与用户相关的模型调用配置文件。配置文件模型有10多个字段,当尝试更新用户配置文件时,我更新所有这些字段的代码如下
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)
所以我的问题是,假设有超过20,30个字段,你会如何设计更新这些字段的代码(仅考虑视图(部分)
您可以为从前端获得的任何值制作kwargs(意思词典),然后可以解压这些值。如果你不知道的话,你可以打开包装
假设kwargs是您的字典,您只想更新职业和付款类型
相关问题 更多 >
编程相关推荐