【发布时间】:2018-12-04 21:04:13
【问题描述】:
我在 API 上使用 Django REST。我的模特:
class Region(MPTTModel):
name = models.CharField(max_length=50, unique=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children', on_delete=models.CASCADE)
class Category(MPTTModel):
name = models.CharField(max_length=50, unique=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='child', on_delete=models.CASCADE)
class Ad(models.Model):
id = models.IntegerField(primary_key=True, blank=True)
title = models.CharField(max_length=30 , help_text='Title ads' , db_column='data')
date_create = models.DateTimeField(auto_now=True,help_text='Date Create')
description = models.TextField(max_length=300)
region = TreeForeignKey(Region,blank=True , null=True, related_name='Reg',on_delete=models.CASCADE)
category = TreeForeignKey(Category,blank=True , null=True, related_name='ad',on_delete=models.CASCADE)
views = models.IntegerField(blank=True, null=True)
price = models.IntegerField(blank=True, null=True)
我的序列化器:
class AdSerializer(serializers.ModelSerializer):
images = serializers.StringRelatedField(many=True)
class Meta:
model = Ad
fields = ('title', 'description', 'region', 'category','price' , 'date_create','id','views','images')
class CategorySerializer(serializers.ModelSerializer):
ad = AdSerializer(many=True)
child = RecursiveField(allow_null=True,required=False,many=True)
class Meta:
model = Category
fields = ('name','id','ad','child')
class RegionSerializer(serializers.ModelSerializer):
children = RecursiveField(allow_null=True, required=False,many=True)
class Meta:
model = Region
fields = ('name','id' , 'children')
views.py:
class AdViewSet(viewsets.ModelViewSet):
queryset = Ad.objects.all().order_by('-date_create')
serializer_class = AdSerializer
我现在如何编写 urls.py、views.py,以便我可以按区域和按类别过滤斜线?例如http://localhost:8000/{region}/{category}/。 如果有任何建议,我会很高兴,但我的英语很抱歉
【问题讨论】:
-
是否可以使用嵌套路由器来实现?
-
是的,有可能。
-
@Umair 不能展示小例子吗?
-
作为答案发布先生,也许您需要根据需要对其进行调整
标签: django python-3.x django-models django-rest-framework django-views