Ответы пользователя по тегу Django
  • Как отобразить картинку в шаблоне Django?

    EtherDaler
    @EtherDaler
    3k MMR
    в главных урлах после паттернов прописываете
    urlpatterns[...] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

    И потом если у вас Debug = True, то закоментируйте Static_Root и оставьте Static_files_dirs. И наоборот, если Debug = False, то Static_root оставьте, а Static_files_dirs закоментируйте
    Ответ написан
    Комментировать
  • Альтернативные варианты реализации корзины в DRF?

    EtherDaler
    @EtherDaler
    3k MMR
    Создаете модель корзины, связываете ее с моделью пользователя. Потом создаете модель товары корзины и связываете ее с моделью корзины. Важно указать в ForeignKey полях аргумент related_name, чтобы можно было обращаться из родительской модели к дочерней.
    class Basket(models.Model):
        user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='basket')
    
    class BasketProducts(models.Model):
        basket= models.ForeignKey(Basket, on_delete=models.CASCADE, related_name='basket_products')
        products = models.ManyToManyField(Products, on_delete=models.CASCADE, related_name="basket_products")
    
    class Products(models.Model):
        name = models.CharField(max_length=255)
       '''''

    Потом сериализируете модели
    class ProductsSerializer(serializers.ModelSerializer):
        class Meta:
            model = Products
            fields = ("__all__")
    
    
    class BsketProductsSerializer(serializers.HyperlinkedModelSerializer):
        products = ProductsSerializer(many=True)
        class Meta:
            model = BasketProducts
            fields = ('basket','products')
    
    class BasketSerializer(serializers.HyperlinkedModelSerializer):
        basket_products = BsketProductsSerializer(many=True)
        class Meta:
            model = Basket
            fields = ('user' , 'basket_products ')
    
    class UserSerializer(serializers.HyperlinkedModelSerializer):
        basket = BasketSerializer(many=True)
        class Meta:
            model = User
            fields = ('id', 'phone','email' ,'basket')


    Далее во вьюхе в вашей функции API указываете permission_class как isAuthenticated, потом получаете корзину пользователя командой request.user.basket . В запросе в хедере указываете Authorization и токен.
    Ответ написан
    Комментировать
  • Как сделать чтобы slug повторял title?

    EtherDaler
    @EtherDaler
    3k MMR
    from django.utils.text import slugify
    class Book(models.Model):
        ...
        def save(self, *args, **kwargs):
            self.slug = slugify(self.title)
            super(Book, self).save(*args, **kwargs)


    Я еще делаю так в админке
    class BooksAdmin(admin.ModelAdmin):
        ...
        prepopulated_fields = {'slug': ('title',)}
        ...
    admin.site.register(Book, BooksAdmin)

    Фича в админке сразу автоматически меняет slug при вводе текста в поле title
    Ответ написан
    Комментировать