私は2つのかなり基本的なDjangoモデルがあります:UserとUserProfileです。RESTフレームワークを使用していますが、すべてのユーザーを取得するときにプロファイル情報を含めたいと考えています。インターネットを検索しましたが、答えが見つかりませんでした。これは私が現在試みていることです:User.objects.all().prefetch_related('userprofile')
私が返そうとしているのは次のようなものです:
[
{'email': '[email protected]',
'first_name': 'Test',
'last_name': 'McTester'},
{'email': '[email protected]',
'first_name': 'Mary',
'last_name': 'McPherson'}
]
ここで、姓と名はプロファイル属性です。FlaskとGraphQLを使用して同様のことを行うことができましたが、DjangoのRESTでこれが可能かどうか疑問に思いました。
ええと、モデルとモデルの関係に基づいて、事前にモデルprefetch_related
からデータをロードするので、呼び出すときにデータベースに再度アクセスすることはありません。ただし、を呼び出しても値は返されません。だからあなたにモデルシリアライザ、あなたがこれらの二つのフィールドを追加することができますを指しているのと。例えば:UserProfile
User
UserProfile
user.userprofile
user
source
UserProfile
first_name
last_name
class UserSerializer(serializer.ModelSerializer):
first_name = serializer.CharField(source='userprofile.first_name', read_only=True)
last_name = serializer.CharField(source='userprofile.last_name', read_only=True)
class Meta:
model = User
fields = ['email', 'first_name', 'last_name']
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加