added new fields
This commit is contained in:
@@ -30,7 +30,7 @@ class OrderSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Order
|
||||
fields = [
|
||||
'id', 'order_number', 'total_price', 'user', 'payment_type', 'delivery_type',
|
||||
'id', 'order_number', 'status', 'total_price', 'user', 'payment_type', 'delivery_type',
|
||||
'delivery_price', 'contact_number', 'comment', 'name', 'items', 'created_at'
|
||||
]
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ class AdminProductListSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Product
|
||||
fields = [
|
||||
'id', 'name_uz', 'name_ru', 'image', 'category', 'price', 'description_uz', 'description_ru', 'unity', 'tg_id', 'code', 'article', 'quantity_left', 'min_quantity', 'code',
|
||||
'id', 'name_uz', 'name_ru', 'is_active', 'image', 'category', 'price', 'description_uz', 'description_ru', 'unity', 'tg_id', 'code', 'article', 'quantity_left', 'min_quantity', 'code',
|
||||
]
|
||||
|
||||
def get_category(self, obj):
|
||||
@@ -21,7 +21,7 @@ class ProductSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Product
|
||||
fields = [
|
||||
'name_uz', 'name_ru', 'image', 'category', 'price', 'description_uz', 'description_ru', 'unity', 'tg_id', 'code', 'article', 'quantity_left', 'min_quantity'
|
||||
'name_uz', 'name_ru', 'is_active', 'image', 'category', 'price', 'description_uz', 'description_ru', 'unity', 'tg_id', 'code', 'article', 'quantity_left', 'min_quantity'
|
||||
]
|
||||
extra_kwargs = {
|
||||
'image': {'required':False},
|
||||
|
||||
@@ -10,7 +10,7 @@ from core.apps.orders.models import Order
|
||||
|
||||
class OrderListApiView(generics.GenericAPIView):
|
||||
serializer_class = OrderSerializer
|
||||
queryset = Order.objects.select_related('user').prefetch_related('items', 'items__product').order_by('order_number')
|
||||
queryset = Order.objects.select_related('user').prefetch_related('items', 'items__product').order_by('status', 'order_number')
|
||||
permission_classes = [IsAdminUser]
|
||||
|
||||
def get(self, request):
|
||||
|
||||
@@ -10,5 +10,5 @@ class OrderItemInline(admin.TabularInline):
|
||||
|
||||
@admin.register(Order)
|
||||
class OrderAdmin(admin.ModelAdmin):
|
||||
list_display = ['id', 'user', 'total_price']
|
||||
list_display = ['id', 'user', 'total_price', 'status']
|
||||
inlines = [OrderItemInline]
|
||||
18
core/apps/orders/migrations/0011_order_status.py
Normal file
18
core/apps/orders/migrations/0011_order_status.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.2 on 2025-11-21 16:35
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('orders', '0010_remove_order_address'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='order',
|
||||
name='status',
|
||||
field=models.CharField(choices=[('NEW', 'yangi'), ('DONE', 'tayyor')], default='NEW', max_length=20),
|
||||
),
|
||||
]
|
||||
@@ -15,6 +15,10 @@ class Order(BaseModel):
|
||||
('DELIVERY_COURIES', 'kuryer orqali yetkazib berish'),
|
||||
('PICKUP', 'olib ketish'),
|
||||
)
|
||||
STATUS = (
|
||||
('NEW', 'yangi'),
|
||||
('DONE', 'tayyor'),
|
||||
)
|
||||
|
||||
total_price = models.PositiveBigIntegerField(default=0)
|
||||
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='orders')
|
||||
@@ -25,6 +29,7 @@ class Order(BaseModel):
|
||||
contact_number = models.CharField(max_length=15, null=True, blank=True)
|
||||
comment = models.CharField(max_length=500, null=True, blank=True)
|
||||
name = models.CharField(max_length=200, null=True, blank=True)
|
||||
status = models.CharField(max_length=20, choices=STATUS, default='NEW')
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.user} order'
|
||||
|
||||
@@ -88,6 +88,6 @@ class OrderListSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Order
|
||||
fields = [
|
||||
'id', 'order_number', 'total_price', 'payment_type', 'delivery_type', 'delivery_price',
|
||||
'id', 'order_number', 'status', 'total_price', 'payment_type', 'delivery_type', 'delivery_price',
|
||||
'contact_number', 'comment', 'name', 'items', 'created_at'
|
||||
]
|
||||
@@ -7,7 +7,7 @@ from core.apps.orders.serializers import order as serializers
|
||||
|
||||
class OrderCreateApiView(generics.GenericAPIView):
|
||||
serializer_class = serializers.OrderCreateSerializer
|
||||
queryset = Order.objects.all()
|
||||
queryset = Order.objects.order_by('status')
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
def post(self, request):
|
||||
|
||||
18
core/apps/products/migrations/0011_product_is_active.py
Normal file
18
core/apps/products/migrations/0011_product_is_active.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.2 on 2025-11-21 16:41
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('products', '0010_product_min_quantity'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='product',
|
||||
name='is_active',
|
||||
field=models.BooleanField(default=True),
|
||||
),
|
||||
]
|
||||
@@ -27,6 +27,7 @@ class Product(BaseModel):
|
||||
code = models.CharField(max_length=200, null=True, blank=True)
|
||||
quantity_left = models.PositiveBigIntegerField(default=0)
|
||||
min_quantity = models.FloatField(null=True)
|
||||
is_active = models.BooleanField(default=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
@@ -11,7 +11,7 @@ class ProductListSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Product
|
||||
fields = [
|
||||
'id', 'name', 'image', 'price', 'description', 'liked', 'unity', 'min_quantity'
|
||||
'id', 'name', 'image', 'price', 'description', 'liked', 'unity', 'min_quantity', 'is_active'
|
||||
]
|
||||
|
||||
def get_liked(self, obj):
|
||||
|
||||
@@ -9,14 +9,14 @@ from core.apps.products.serializers import product as serializers
|
||||
|
||||
class ProductListApiView(generics.GenericAPIView):
|
||||
serializer_class = serializers.ProductListSerializer
|
||||
queryset = Product.objects.select_related('unity').order_by('name')
|
||||
queryset = Product.objects.filter(is_active=True).select_related('unity').order_by('name')
|
||||
permission_classes = []
|
||||
filter_backends = [filters.SearchFilter]
|
||||
search_fields = ['name']
|
||||
|
||||
def get(self, request, category_id):
|
||||
category = get_object_or_404(Category, id=category_id)
|
||||
products = Product.objects.filter(category=category).select_related('unity').distinct()\
|
||||
products = Product.objects.filter(category=category, is_active=True).select_related('unity').distinct()\
|
||||
.order_by('name')
|
||||
page = self.paginate_queryset(self.filter_queryset(products))
|
||||
if page is not None:
|
||||
@@ -28,7 +28,7 @@ class ProductListApiView(generics.GenericAPIView):
|
||||
|
||||
class ProductsApiView(generics.GenericAPIView):
|
||||
serializer_class = serializers.ProductListSerializer
|
||||
queryset = Product.objects.select_related('unity')
|
||||
queryset = Product.objects.select_related('unity').filter(is_active=True)
|
||||
permission_classes = []
|
||||
|
||||
def get(self, request):
|
||||
|
||||
Reference in New Issue
Block a user