簡體   English   中英

Django REST:將URL序列化為類別的對象列表

[英]Django REST: serialize url to list of objects of a category

硬事實:如果有任何區別,我將Django 2.0與python 3.6結合使用。

我試圖實現的是指向屬於摘要的對象列表的鏈接。 我的models.py中有一個ManyToOne關系。

class Summary(models.model):
  type=models.CharField

class Object(models.Model):
  summary= models.ForeignKey(Summary, on_delete=models.CASCADE)

在urls.py中

object_list= views.ObjectListViewSet.as_view({
    'get': 'list'
})
urlpatterns = format_suffix_patterns([
    url(r'^summary/(?P<pk>[^/.]+)/objects/$', object_list, name='summary-objects')
])

現在的想法是讓用戶可以單擊可瀏覽API中的url並獲取所有對象。 因此,我嘗試在serializers.py中編寫一個MethodField。 我在這里無法獲得任何合理的URL,唯一的解決方案是對其進行硬編碼。

class SummarySerializer(serializers.HyperlinkedModelSerializer):
    url = serializers.HyperlinkedIdentityField(
        view_name="app:summary-detail")

    objects= serializers.SerializerMethodField('get_obj_url')

    def get_obj_url(self, obj):
        pass

    class Meta:
        model = Summary

這可能嗎? 是否有必要編寫MethodField? 如果是,如何獲取所需的網址?

實際上,按照注釋中的建議,反向可以解決問題。 解決方案是:

def get_obj_url(self, obj):
    request = self.context.get('request')
    return request.build_absolute_uri(reverse('api-root')) + 'summary/{id}/objects'.format(
        id=obj.id)

編輯:錯別字

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM