Я просмотрел источник Tastypie, и мой вывод следующий ...
Вы можете попытаться использовать свой ресурс и изменить значение атрибута excludes
на лету, когда метод POST, но это будет сложно и, что самое важное, взломать.
Поэтому я полагаю, что вам лучше всего делать то, что вы делаете, но, возможно, вместо нескольких del bundle[ 'field' ]
введите атрибут post_excludes
или что-то подобное и реализуйте более удобный и гибкий способ избавиться от этих полей. , Например, вы можете сделать что-то вроде этого:
class YourResource( Resource ):
class Meta:
# ...
post_excludes = [ 'foo', 'bar' ]
# ...
# ...
def alter_detail_data_to_serialize( self, request, data ):
if request.method == 'POST':
data.data = {
key : value for key, value in data.data.copy().iteritems() if \
key not in self._meta.post_excludes }
return data
# ...
Это было бы чище и соответствовало бы "правилам" Tastypie, что важно, чтобы не заканчиваться запутанным, взломанным кодом, который трудно поддерживать.
Надеюсь, это поможет:)