0

我有以下模型,它基本上为与特定用户关联的每个标签存储随机哈希值。

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 Framework 来执行以下操作:

  • 创建将在 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)
4

1 回答 1

1

据我了解,您需要查询单个记录并创建记录。在这种情况下,基于通用类的视图可以很好地开始。

然后,您可以像这样在 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()),
)

如果您使用主键来获取单个记录,则这是有效的。

于 2013-03-13T16:09:56.687 回答