当前位置: 首页 > 知识库问答 >
问题:

在配置文件序列化程序中显示first_name、last_name和电子邮件

鲁望
2023-03-14

我有一个配置文件模型,用户注册后必须更新他们的配置文件。为此,我设计了两个序列化程序,一个UserSerializer显示用户列表,另一个ProfileSerializer有很多字段供用户添加到他们的配置文件中。用户不仅可以更新他们的个人资料,如身高、体重、年龄、位置、体型等,还可以更新个人资料中的名字、姓氏和电子邮件。

这是我的UserSerializer和ProfileSerializer

class ProfileSerializer(serializers.ModelSerializer):
    # url = serializers.HyperlinkedRelatedField(source="user", view_name="user_profile")
    user = serializers.PrimaryKeyRelatedField(read_only=True)
    token = serializers.PrimaryKeyRelatedField(read_only=True)

    class Meta:
        model = Profile
        fields = ('token', 'user', 'current_location', 'permanent_location', 'dob',
                    'about_me', 'gender_status', 'create_profile_for', 'marital_status',
                    'height', 'weight', 'body_type', 'complexion',)

    def update(self, instance, validated_data):
        first_name = validated_data.pop('first_name', None)
        last_name = validated_data.pop('last_name', None)
        user_inst_fields = {}
        if first_name:
            user_inst_fields['first_name'] = first_name
        if last_name:
            user_inst_fields['last_name'] = last_name
        if user_inst_fields:
            User.objects.update_or_create(id=instance.user.id, defaults=user_inst_fields)
        profile, created = Profile.objects.update_or_create(token=instance.token, defaults=validated_data)
        print('profile', profile, created)
        return profile

class UserSerializer(serializers.ModelSerializer):
    profile = ProfileSerializer(required=True)
    class Meta:
        model = User
        fields = ('id', 'profile', 'username', 'email', 'first_name', 'last_name',)

我无法显示名字、姓氏和用户名字段,以便用户随个人资料一起更新。

您可以看到屏幕截图,没有显示名字、姓氏和用户名

共有1个答案

柴文林
2023-03-14

您可以使用关键字参数字符域中显示名字姓氏用户名中的ProfileSerializer

class ProfileSerializer(serializers.ModelSerializer):
    # url = serializers.HyperlinkedRelatedField(source="user", view_name="user_profile")
    user = serializers.PrimaryKeyRelatedField(read_only=True)
    token = serializers.PrimaryKeyRelatedField(read_only=True)
    first_name = serializers.CharField(source = "user.first_name")
    last_name = serializers.CharField(source = "user.last_name")
    username = serializers.CharField(source = "user.username")

    class Meta:
        model = Profile
        fields = ('token', 'user', 'current_location', 'permanent_location', 'dob',
                    'about_me', 'gender_status', 'create_profile_for', 'marital_status',
                    'height', 'weight', 'body_type', 'complexion',)

    def update(self, instance, validated_data):
        first_name = validated_data.pop('first_name', None)
        last_name = validated_data.pop('last_name', None)
        user_inst_fields = {}
        if first_name:
            user_inst_fields['first_name'] = first_name
        if last_name:
            user_inst_fields['last_name'] = last_name
        if user_inst_fields:
            User.objects.update_or_create(id=instance.user.id, defaults=user_inst_fields)
        profile, created = Profile.objects.update_or_create(token=instance.token, defaults=validated_data)
        print('profile', profile, created)
        return profile

现在,DRF将从配置文件模型上的用户关系中获取名字姓氏电子邮件

 类似资料:
  • 每个社区都需要发送电子邮件给用户,用来激活账户、重置密码、接收通知以及与其他用户通讯交流。作为论坛管理员,您首先要做的几件事之一就是配置好论坛的邮件服务!配置错误的话,用户在注册时会收到报错。 Flarum 默认提供以下所列驱动,若有需要,开发者可自行开发插件添加 自定义邮件驱动。 这是最常用的邮件驱动,需要您配置主机地址、端口、加密方式、用户名和密码,以使用外部 SMTP 服务。请注意,加密方式

  • 嗨,我正试图在后台发送一封电子邮件,而没有应用程序。我考虑过使用GMailSender/jsse,有人提到/我很难将包添加到GMailSender,这是以前在new com.provider.jsseprovider()中问到的,不能解析符号提供者,但是当我键入包名时会出现错误。 完整代码

  • 我正在尝试在电子邮件中嵌入一个图像。我遵循了这里,这里和这里的例子和其他但我不能得到图像显示。 当我执行这个时,我得到的是一个空空如也的身体,里面有一个红十字,没有任何图像。如何使图像与电子邮件正文内联显示? 我正在使用Outlook 2016。我知道我可以在使用Outlook时插入图片,我也收到过别人在文本中插入图片的“正常”电子邮件,所以这肯定意味着我必须能够查看python脚本生成的图片?

  • 这是我发送电子邮件的PHP代码 我将HTML文件检索为$HTML 原始HTML文件包含CSS,看起来不错,但只显示白色背景的文本。在HTML文件中,我将“替换为”,但它仍然不起作用。

  • 问题内容: 注意:我不想将图像附加到电子邮件 我想在电子邮件正文中显示图片, 我已经尝试了HTML image标签,并且得到了输出,正如您在此中看到的关于如何在电子邮件正文中添加图像的问题一样,我很累。 它对我不起作用,它也给我相同的输出,所以我怀疑是否可以这样做, 我的密码 更新1: 如果我使用该代码,则可以获取文本和图像,但无法在电子邮件正文中看到图像 这是我的代码: 更新2: 我使用了粗体标

  • 我有一个关于Strapi电子邮件插件的问题。我想使用Nodemailer。当我用邮递员测试它时,我得到了错误500。我是否用错误的格式编写了PostScript JSON? 提前感谢! 本杰明