[英]Django Rest Framework, display data from a table referenced with a foreign key
[英]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')
您需要在序列化程序中定義username
和email
字段,並使用點分表示法將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.