我正在使用Django,有一台User
型号的和一台UserProfile
型号的.User
和UserProfile
是一对一的关系.
UserProfile
模型有一些字段,如"性别","出生日期"等.我需要添加另一个字段称为"职业信息",在那里用户可以添加多个职业相关的属性:"职业","称号"和"描述".用户可以添加多个"PROCESS_INFO".
我怎样才能完成这项任务呢?更新用户个人资料的最简单、最有效的方法是什么?
我正在使用Django,有一台User
型号的和一台UserProfile
型号的.User
和UserProfile
是一对一的关系.
UserProfile
模型有一些字段,如"性别","出生日期"等.我需要添加另一个字段称为"职业信息",在那里用户可以添加多个职业相关的属性:"职业","称号"和"描述".用户可以添加多个"PROCESS_INFO".
我怎样才能完成这项任务呢?更新用户个人资料的最简单、最有效的方法是什么?
您可以在模型中添加其他manytomany
字段,如下所示
class ProfessionInfo(models.Model):
profession = models.CharField(max_length=100)
designation = models.CharField(max_length=100)
description = models.TextField()
class UserProfile(models.Model):
...
profession_info = models.ManyToManyField(ProfessionInfo)
添加这些字段后,您可以在Django REST API中创建serializer
,并使用您的用户数据获取专业数据,如下所示
class ProfessionInfoSerializer(serializers.ModelSerializer):
class Meta:
model = ProfessionInfo
fields = ['profession', 'designation', 'description']
class UserProfileSerializer(serializers.ModelSerializer):
# use profession info from another serializer with many true
profession_info = ProfessionInfoSerializer(many=True)
class Meta:
model = UserProfile
fields = ['gender', 'birth_date', 'profession_info']
def update(self, instance, validated_data):
# remove profession_info before saving userProfile object.
profession_info_data = validated_data.pop('profession_info')
profession_info = []
for info_data in profession_info_data:
info, _ = ProfessionInfo.objects.get_or_create(**info_data)
profession_info.append(info)
instance.profession_info.set(profession_info)
return super().update(instance, validated_data)