iOSプロジェクトのバックエンドAPIとして機能するDjango RESTアプリケーションを構築しました。私のオブジェクトモデルでは、 'Subscription'を使用して 'User'オブジェクトと 'Workspace'オブジェクトを結合します。ここでは簡略化され、私のmodels.pyの一部です:クエリーセットと間接的な関係をシリアル化するにはどうすればよいですか?
class User(models.Model):
# some property fields
class Workspace(models.Model):
# some property fields
class Subscription(models.Model):
# some property fields
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='subscriptions')
workspace = models.ForeignKey(
Workspace,
on_delete=models.CASCADE,
related_name='subscriptions')
私はiOSのフロントエンドからのHTTP GETでワークスペース・オブジェクトのリストを取得することができますので、私は、オブジェクトのクラスベースのビューを構築しています。便宜上、ワークスペースのリストにモデルフィールド以外のものを追加したいと思います。たとえば、すべてのワークスペースオブジェクトに対して購読しているユーザーのリストを含める必要があります。フィールドをシリアル化するためにSerializerMethodField()とクエリーセットを使用することをお勧めしましたが、クエリの構築方法はわかりません。彼らは直接関連しているので
class WorkspaceSerializer(serializers.ModelSerializer):
subscribed_users = serializers.SerializerMethodField()
class Meta:
model = Workspace
fields = ('id', 'subscribed_users')
def get_users(self, workspace):
users = User.objects.filter(???)
serializer = UserSerializer(instance=users, many=True)
return serializer.data
ワークスペースに関連するサブスクリプションを取得するには簡単ですが、どのように私は疑問にワークスペースに加入しているユーザーを得るのです:私はここまで持っていますか?