Django REST Serializer and unique_together and from_native -
i having problem using slugrelatedfield
deserialize field part of unique_together
set.
to given example, have blog model has title , author. tuple of these uniquely identify blog (as in title unique given author, not unique site wide). want blog message containing these values.
in order deserialize message (i.e. from_native
), slugrelatedfield
calls: self.queryset.get(**{self.slug_field: data})
fail on title slug because not globally unique. can solved providing more limited queryset (ie 1 contains blogs user), not sure how/where best place set queryset in field (because not know author until deserializing field).
one thought own deserialization of author in get_fields filter queryset blog. code pretty ugly, results in deserialization of author twice, , has issues when serializer used list view (as opposed detail view).
you need set queryset field @ runtime.
you can in serialiser, like:
class myobjectserializer(serializers.hyperlinkedmodelserializer): def get_fields(self, *args, **kwargs): fields = super(myobjectserializer, self).get_fields(*args, **kwargs) fields['slug'].queryset = myobject.objects.filter(self.context['view'].request.user) homecoming fields
or in view as:
def get_serializer(self): serializer = super(myobjectview, self).get_serializer() serializer.fields['slug'].queryset = myobject.objects.filter(self.request.user)
it's same thing — you're setting queryset on slug field 1 time have reference current user — it depends on best you.
i hope helps.
django django-rest-framework
No comments:
Post a Comment