0
我已經構建了一個Django REST應用程序作爲iOS項目的後端API。在我的對象模型中,我使用'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()和querysets來序列化字段,但我不知道如何構建查詢。我走了這麼遠:
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
相關工作區使用訂閱是容易的,因爲他們是直接相關的,但我如何才能訂閱了有關工作區的用戶?