【问题标题】:django-allauth - RESTful API return all email address belonging to a userdjango-allauth - RESTful API 返回属于用户的所有电子邮件地址
【发布时间】:2016-05-09 15:48:01
【问题描述】:

我正在尝试创建序列化类,它将返回属于特定用户的所有电子邮件地址,但我不知道如何实现,因为在 django-allauth 中,emailaddress_set 链接到 User 模型。我想要这个的原因很清楚 - 我想显示一个可以更改电子邮件地址的 AJAX 表单(我正在使用 AngularJS)。
回到主题 - 我正在考虑这样的事情,但显然它不会起作用:

from django.contrib.auth import get_user_model
from rest_framework import serializers

UserModel = get_user_model()

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserModel
        fields = '__all__'

class EmailSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserModel.emailadress_set
        fields = '__all__'

这就是django-allauth 中电子邮件地址类的组成方式:

class EmailAddress(models.Model):

    user = models.ForeignKey(allauth_app_settings.USER_MODEL,
                             verbose_name=_('user'))
    email = models.EmailField(unique=app_settings.UNIQUE_EMAIL,
                              max_length=254,
                              verbose_name=_('e-mail address'))
    verified = models.BooleanField(verbose_name=_('verified'), default=False)
    primary = models.BooleanField(verbose_name=_('primary'), default=False)

    objects = EmailAddressManager()

【问题讨论】:

    标签: python django django-rest-framework django-allauth


    【解决方案1】:

    希望这会奏效

    class EmailSerializer(serializers.ModelSerializer):
        user_info = serializers.RelatedField(source='usermodel', read_only=True)
    
        class Meta:
            model = EmailAddress
            fields = ('id', 'email', 'user_info')
    

    【讨论】:

    • 感谢您的课程,即使没有 user_info 字段也可以使用!
    猜你喜欢
    • 2016-02-09
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 2020-10-26
    • 2013-05-13
    • 2017-07-03
    • 2022-10-01
    相关资源
    最近更新 更多