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 でアクセスされるビューを作成します。
  • Django Rest API を使用して AJAX を使用してデータを投稿します。
  • 投稿時に、システムは次のことを行います: タグ 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 に答える