где я могу поместить пользовательскую логику или какую функцию перегрузить, чтобы добавить пользовательскую логику в tastypie. Например: хотите вернуть CustomObject
, который содержит name
в верхнем регистре, но перед возвратом я хочу сделать его строчным.Пользовательская логика в tastypie
ответ
Если вы хотите предоставить такие вещи, я рекомендую делать это в течение dehydrate
. Проверьте documentation, пример довольно много, что вы ищете:
class MyResource(ModelResource):
# The ``title`` field is already added to the class by ``ModelResource``
# and populated off ``Note.title``. But we want allcaps titles...
class Meta:
queryset = Note.objects.all()
def dehydrate_title(self, bundle):
return bundle.data['title'].upper()
Ну, за исключением того, что вы ищете .lower()
конечно :)
class CustomObjectResource(ModelResource):
class Meta:
queryset = CustomObject.objects.all()
def dehydrate_title(self, bundle):
return bundle.data['name'].lower()
Вы можете IMHO переопределить любое поле:
class CustomResource(ModelResource):
name = fields.CharField(
attribute='get_lowercased_name',
readonly=True
)
class Meta:
queryset = Custom.objects.all()
И вам нужно определить get_lowercased_name
метод на вашей Custom
модели класса.
Благодаря @Michal выше было только предоставить пример и, как представляется, не очень хороший пример, поскольку он используется с использованием стандартного API. То, что я хочу, делает некоторую логику перед возвратом данных, но я не знаю, где я могу поместить эту логику. – user1318496
Спасибо @msc, может быть, это мой отказ от вопроса. То, что я хочу, - это переопределение поведения, поведения, поведения. Скажем, в качестве примера, всякий раз, когда пользователь отправляет запрос на 'get', я увеличиваю счетчик для этого объекта, и когда пользователь отправит запрос' post', сначала я проверю специальные права и затем предоставил доступ к изменению некоторых данных. – user1318496
. Для получения, это также можно сделать в цикле дегидратации, проверить дегидрат(). http://django-tastypie.readthedocs.org/en/latest/resources.html#advanced-data-preparation – msc
Для размещения, публикации и использования apply_authorization_limits() для доступа – msc