簡體   English   中英

django rest框架從外鍵關系中獲取數據

[英]django rest framework get data from foreign key relation

我使用Django auth用戶創建了一個用戶配置文件,因此我希望使用UserProfile模型序列化程序獲取用戶名,電子郵件和電話,因此可以使用Django rest框架中的ModelSerializer從外鍵關系中獲取數據。 我沒有從文檔和Google獲得任何有用的解決方案,請幫忙。

class UserProfile(models.Model):
    user = models.ForeignKey(User,)
    phone = models.CharField(max_length=15, blank=True)

class UserProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model=UserProfile
        fields = (phone,'user__username','user__email')

您需要在序列化程序中定義usernameemail字段,並使用點分表示法將source參數傳遞給User模型中的遍歷屬性。

你需要做一些事情:

class UserProfileSerializer(serializers.ModelSerializer):
    username = serializers.CharField(source='user.username', read_only=True)
    email = serializers.EmailField(source='user.email', read_only=True)

    class Meta:
        model=UserProfile
        fields = (phone, username, email)

如果您正在使用休息 - 我建議建議序列化這樣的用戶模型

class UserSerializer(serializers.ModelSerializer):
    phone = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

    class Meta:
        model = User
        fields = ('username', 'email', 'phone')

如果你想要反過來:

class UserProfileserializer(serializers.ModelSerializer):
    username = serializers.RelatedField(source='user', read_only=True)
    email = serializers.RelatedField(source='user', read_only=True)

    class Meta:
       model = UserProfile
       fields = ('username','email','phone')

試試這個:

# import your serializer class
from myapp.serializers import UserProfileSerializer

class UserSerializer(serializers.ModelSerializer):
    phone = UserProfileSerializer(many=True, read_only=True)

    class Meta:
        model = User
        fields = ('username', 'email', 'phone')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM