У меня есть модель подписки, которая выглядит как
class Subscription(models.Model):
name = models.CharField(max_length=100)
quantity = models.IntegerField(max_length=20)
stripe_id = models.CharField(max_length=100)
user = models.ForeignKey(User)
Я хотел бы создать конечную точку, которая позволяет POST, PATCH, DELETE, GET
Итак, я сделал следующее:
views.py
class SubscriptionDetail(viewsets.ModelViewSet):
serializer_class = SubscriptionSerializer
permission_classes = (IsAuthenticated,)
queryset = Subscription.objects.all()
serializers.py
class SubscriptionSerializer(serializers.ModelSerializer):
class Meta:
model = Subscription
fields = ('name','quantity', 'stripe_id')
def update(self, instance, validated_data):
print "In update"
#how do I write create and delete?
urls.py
subscription = SubscriptionDetail.as_view({
'patch': 'update'
})
url(r'^rest-auth/subscription/$', subscription, name='something'),
Вопросы
- Используя вышеприведенное при отправке запроса
PATCH
, я получаю сообщение об ошибке. Как я могу это исправить?
Ожидаемое представление SubscriptionDetail для вызова с ключевым словом URL аргумент с именем "pk". Исправьте URL conf или установите
.lookup_field
атрибут на представлении правильно.
- При отправке запроса на исправление я также хотел бы отправить поле "email", которое не относится к модели подписки. Возможно ли это сделать? Мне нужно поле
email
в операцииPOST (create)
, чтобы я знал, к кому принадлежит подписка.