Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #models.py
- class ItemPicture(models.Model):
- item = models.ForeignKey(Item, on_delete=models.CASCADE, related_name='pictures')
- img = models.ImageField(upload_to=pathfinder, blank=True)
- def __str__(self):
- return f'{self.item.part_number}'
- #admin.py
- class PictureInline(admin.StackedInline):
- model = ItemPicture
- extra = 1
- @admin.register(Item)
- class AdminProductItem(admin.ModelAdmin):
- filter_horizontal = ('concepts', 'subcategories', 'accessories',)
- raw_id_fields = ('replacement', 'supplier', 'manufacturer')
- inlines = [PictureInline]
- #serializers.py
- class ItemPictureUrlSerializer(serializers.RelatedField):
- queryset = ItemPicture
- def to_representation(self, value):
- return self.context['request'].build_absolute_uri(value.img.url)
- class ItemSerializer(serializers.ModelSerializer):
- pictures = ItemPictureUrlSerializer(many=True)
- class Meta:
- model = Item
- fields = '__all__'
- class SingleItemSerializer(serializers.ModelSerializer):
- pictures = ItemPictureUrlSerializer(many=True)
- class Meta:
- model = Item
- fields = '__all__'
- depth = 1
- #views.py
- class ItemViewSet(viewsets.ViewSet):
- permission_classes = [HasAPIKey | permissions.IsAdminUser]
- def list(self, request):
- queryset = Item.objects.all()
- serializer = ItemSerializer(queryset, many=True, context={'request': request})
- return Response(serializer.data)
- def retrieve(self, request, pk=None):
- queryset = Item.objects.all()
- item = get_object_or_404(queryset, pk=pk)
- serializer = SingleItemSerializer(item, context={'request': request})
- return Response(serializer.data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement