Django:在检索API视图中获取嵌套对象的queryset

时间:2019-01-27 21:15:35

标签: django django-models django-rest-framework django-views djongo

我正在使用django-rest-framework创建一个Django应用程序,并使用djongo连接到MongoDB。我有这样的嵌套模型:

class Group(models.Model):
    group_code = models.CharField(
        max_length=15,
        blank=False,
        unique=True
    )

    users = models.ArrayModelField(
        model_container=User
    )

class User(models.Model):
    name = models.CharField(
        max_length=100
    )

    user_code = models.CharField(
        max_length=32,
        default=hex_uuid,
        editable=False
    )

    class Meta:
        abstract = True

我正在尝试建立一个视图以通过以下URL检索用户:

urlpatterns = {
    url(r'^user/(?P<group_code>[\w]+)/(?P<user_code>[\w]+)/$',
        UserDetail.as_view(), name='user-detail')
}

从本质上讲,我希望视图仅显示用户信息而不是组信息。这没有用,但是我尝试过:

class UserDetail(generics.RetrieveUpdateDestroyAPIView):
    serializer_class = UserFullSerializer

    def get_queryset(self, *args, **kwargs):
        return Group.objects.get(team_code=self.kwargs['group_code']).users

    lookup_field = 'user_code'
    lookup_url_kwarg = 'user_code'

但是,在这种情况下,users是普通列表而不是QuerySet。因此,lookup_field属性无法正常工作。关于如何将User类型的嵌套列表users作为QuerySet访问的任何想法,以便此视图可以正常工作?还是我以错误的方式处理此问题?

0 个答案:

没有答案