DRF 中的过滤问题
Filtering issue in DRF
我遇到的问题如下:
TypeError: init() 得到了一个意外的关键字参数 'name'
"GET /apartmentimages/ HTTP/1.1" 500 136691
我有这样一个model.py class:
class Apartment(models.Model):
apartment_title = models.CharField(max_length=200)
apartment_description = models.TextField()
apartment_location = models.CharField(max_length=200)
apartment_people_quantity = models.PositiveIntegerField()
apartment_price = models.CharField(max_length=200)
apartment_type = models.CharField(max_length=50, null=True)
def __str__(self):
return self.apartment_title
class ApartmentImage(models.Model):
apartment = models.ForeignKey(Apartment, on_delete=models.CASCADE)
image = models.ImageField(upload_to='images/', null=True, blank=True)
和serializers.py class:
class ApartmentSerializer(serializers.ModelSerializer):
class Meta:
model = Apartment
fields = (
'id',
'url',
'apartment_title',
'apartment_description',
'apartment_location',
'apartment_people_quantity',
'apartment_price',
'apartment_type',
)
class ApartmentImageSerializer(serializers.ModelSerializer):
class Meta:
model = ApartmentImage
fields = ('id', 'url', 'apartment', 'image',)
在views.py中:
apartment_id = django_filters.CharFilter(name="apartment__id",
queryset=Apartment.objects.all())
class Meta:
model = ApartmentImage
fields = ('apartment_id',)
class ApartmentImageView(viewsets.ModelViewSet):
queryset = ApartmentImage.objects.all()
serializer_class = ApartmentImageSerializer
filter_backends = (DjangoFilterBackend,)
filter_class = ApartmentImageFilter
您在 django-filters
中没有名称作为属性。也许你要找的是 field_name
而你也不需要 queryset=Apartment.objects.all()
。如果您正在寻找 field_name
的字段,那么您的 CharFielter 应该看起来像这样 apartment_id = django_filters.CharFilter(field_name="apartment__id", lookup_expr='iexact')
如果您没有覆盖 id 生成,它可能应该是 NumberFilter()
如果我是没错。
我遇到的问题如下: TypeError: init() 得到了一个意外的关键字参数 'name' "GET /apartmentimages/ HTTP/1.1" 500 136691
我有这样一个model.py class:
class Apartment(models.Model):
apartment_title = models.CharField(max_length=200)
apartment_description = models.TextField()
apartment_location = models.CharField(max_length=200)
apartment_people_quantity = models.PositiveIntegerField()
apartment_price = models.CharField(max_length=200)
apartment_type = models.CharField(max_length=50, null=True)
def __str__(self):
return self.apartment_title
class ApartmentImage(models.Model):
apartment = models.ForeignKey(Apartment, on_delete=models.CASCADE)
image = models.ImageField(upload_to='images/', null=True, blank=True)
和serializers.py class:
class ApartmentSerializer(serializers.ModelSerializer):
class Meta:
model = Apartment
fields = (
'id',
'url',
'apartment_title',
'apartment_description',
'apartment_location',
'apartment_people_quantity',
'apartment_price',
'apartment_type',
)
class ApartmentImageSerializer(serializers.ModelSerializer):
class Meta:
model = ApartmentImage
fields = ('id', 'url', 'apartment', 'image',)
在views.py中:
apartment_id = django_filters.CharFilter(name="apartment__id",
queryset=Apartment.objects.all())
class Meta:
model = ApartmentImage
fields = ('apartment_id',)
class ApartmentImageView(viewsets.ModelViewSet):
queryset = ApartmentImage.objects.all()
serializer_class = ApartmentImageSerializer
filter_backends = (DjangoFilterBackend,)
filter_class = ApartmentImageFilter
您在 django-filters
中没有名称作为属性。也许你要找的是 field_name
而你也不需要 queryset=Apartment.objects.all()
。如果您正在寻找 field_name
的字段,那么您的 CharFielter 应该看起来像这样 apartment_id = django_filters.CharFilter(field_name="apartment__id", lookup_expr='iexact')
如果您没有覆盖 id 生成,它可能应该是 NumberFilter()
如果我是没错。