2013-03-13 113 views
0

我有以下模型,它基本上爲每個與特定用戶關聯的標籤存儲一個隨機散列值。使用Django Rest框架

class PublicTags(models.Model): 
    tag = models.ForeignKey(Tag, related_name='hashes') 
    hash_value = models.CharField(max_length=103) 
    user = models.ForeignKey(User, related_name='tags') 
    public = models.BooleanField(default=False) 

    class Meta: 
     unique_together = ('tag', 'user') 
     verbose_name_plural = 'Public Tag Hashes' 

    def __unicode__(self): 
     return u'%s: %s' % (self.tag, self.user, self.hash_value) 

我試圖使用Django的REST框架做到以下幾點:

  • 創建將在API/V1/public_tags訪問的視圖。
  • 我將使用AJAX使用Django Rest API發佈數據。
  • 在一篇文章中,系統執行以下操作: 它檢查標籤ID是否已有公共標籤行(通過發送發送) 如果不是,則會爲該標籤和用戶創建一個隨機hash_value。

我很困惑如何使用Django Rest Framework來完成這項任務。

我能走到今天:

class PublicTagView(RetrieveUpdateAPIView): 
    model = PublicTags 
    serializer_class = serializers.PublicTagSerializer 
    permission_classes = (IsAuthenticated,) 

class RetrieveUpdateAPIView(mixins.RetrieveModelMixin, 
          mixins.UpdateModelMixin, 
          generics.SingleObjectAPIView): 
    """ 
    Concrete view for retrieving or updating a model instance. 
    FIXME: the newest version of rest_framework has this class 
    """ 

    def get(self, request, *args, **kwargs): 
     return self.retrieve(request, *args, **kwargs) 

    def put(self, request, *args, **kwargs): 
     return self.update(request, *args, **kwargs) 

    def create(self, request, *args, **kwargs): 
     return self.create(request, *args, **kwargs) 

回答

1

據我瞭解,你需要查詢個人記錄,並創造了紀錄。 在這種情況下,generic class based views已經足夠好了。

然後,您可以映射在你的urls.py這些觀點是這樣的:

urlpatterns = patterns('', 
    url(r'^api/v1/public_tags/$', views.PublicTagsList.as_view()), 
    url(r'^api/v1/public_tags/(?P<pk>[0-9]+)/$', views.PublicTagsDetail.as_view()), 
) 

如果使用主鍵來獲取個人記錄這是有效的。