0
私は以下のモデルを持っており、ユーザーはAPI でdjango-tastypieとイベントに参加できます。django-tastypieでコマンドapiを追加する最も良い方法は何ですか?
# Conceptual, may not work.
class Event(models.Model):
title = models.CharField('title', max_length=255)
users = models.ForeignKey(User)
def join(self, user):
self.users.add(user)
def leave(self, user):
self.users.remove(user)
# join the events with API like...
jQuery.post(
'/api/v1/events/1/join',
function(data) {
// data should be a joined user instance
// or whatever
alert(data.username + " has joined.");
},
);
しかし、私はこれを行う最良の方法を知らない。 EventJoinResource
likeを作成する必要があります
# Conceptual, may not work.
class EventJoinResource(Resource):
action = fields.CharField(attribute='action')
def post_detail(self, request, **kwargs):
pk = kwargs.get('pk')
action = kwargs.get('action')
instance = Event.objects.get(pk=pk)
getattr(instance, action)(request.user)
resource = EventJoinResource()
# ??? I don't know how to write this with django-tastypie urls
urlpatterns = patterns('',
('r'^api/v1/events/(?P<pk>\d+)/(?P<action>join|leave)/$', include(resource.urls)),
)
どうすればよいですか?どんな提案も歓迎します:-)
Sorro I '' EventTypeResource''の意味を理解しないでください。あなたの提案では、ユーザーはどのようにして特定のイベントに参加できますか?私は参加のための "参加"のような型を渡すべきですか? –
RESTful APIでは、操作やメソッド呼び出し(RPCのようなAPIの特徴です)はないはずです。したがって、イベントに参加するのではなく、イベントを作成するだけです(イベントを操作してください)。 EventTypeResourceは、参加や離脱などのさまざまなイベントを区別するのに役立ちます。したがって、最も単純な形式のEventTypeResourceでは、「ラベル」または「名前」という属性を1つしか持たず、ToOneField()を介してEventResourceに関連付けることができます。次に、「イベントに参加するユーザー」は、関連するEventTypeResourceの「参加」のイベント・ソースとして作成されます。 – kgr
私は参照してください。どうもありがとう! –