class CategorySerializer(serializers.ModelSerializer):
owner = serializers.ReadOnlyField(source='owner.username')
posts = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = Category
fields = ['id', 'name', 'owner', 'posts']
class PostSerializer(serializers.ModelSerializer):
owner = serializers.ReadOnlyField(source='owner.username')
comments = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
categories = serializers.StringRelatedField(many=True)
comments_count = serializers.SerializerMethodField()
class Meta:
model = Post
fields = ['id', 'title', 'body', 'owner', 'comments', 'categories', 'comments_count']
def get_comments_count(self, obj):
return obj.comments.count()
def categories(self):
return self.name
def __str__(self):
return self.name
from rest_framework import generics, permissions
from . import serializers
from django.contrib.auth.models import User
from .models import Post, Comment, Category
from .serializers import PostSerializer
from .permissions import IsOwnerOrReadOnly
class UserList(generics.ListAPIView):
queryset = User.objects.all()
serializer_class = serializers.UserSerializer
class UserDetail(generics.RetrieveAPIView):
queryset = User.objects.all()
serializer_class = serializers.UserSerializer
class PostList(generics.ListCreateAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
class PostDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly,
IsOwnerOrReadOnly]
class CommentList(generics.ListCreateAPIView):
queryset = Comment.objects.all()
serializer_class = serializers.CommentSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
class CommentDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Comment.objects.all()
serializer_class = serializers.CommentSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly,
IsOwnerOrReadOnly]
class CategoryList(generics.ListCreateAPIView):
queryset = Category.objects.all()
serializer_class = serializers.CategorySerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
class CategoryDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Category.objects.all()
serializer_class = serializers.PostSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly,
IsOwnerOrReadOnly]
<?php
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 25 );
function woocommerce_template_single_title(){
?>
<div class="acf">
<h5>Выбор толщины листа, мм</h5>
<input id="input_range" type="range" value="5" min="5" max="1000" step="5">
<h2 style="color:red" id="output"></h2>
</div>
<script>
let input_range = document.querySelector('#input_range');
let output = document.querySelector('#output');
let body = document.querySelector('body');
output.innerHTML = input_range.value;
</script>
<?php
$product_id = get_the_ID();
$product = wc_get_product( $product_id );
$regular_price = $product->get_regular_price();
echo $regular_price;
?>
<script>
input_range.addEventListener('input', function(){
//output.innerHTML = input_range.value;
output.style.background = 'gold';
let changed_price = <?php echo $regular_price; ?> * input_range.value;
output.innerHTML = changed_price;
});
</script>
<?php
}