问题描述
我遇到的问题是: TypeError: init ()获得了意外的关键字参数“名称” “ GET / apartmentimages / HTTP / 1.1” 500 136691
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 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','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()
没错。