反向关系Django Rest框架中的写操作

反向关系Django Rest框架中的写操作,django,django-rest-framework,Django,Django Rest Framework,我有这样的模型: class Car(models.Model): name = models.CharField(max_length=255) class CarImage(models.Model): car = models.ForeignKey(Car, related_name='photos') photo = models.ImageField(upload_to='car/') 对于序列化程序,我有: class CarImageSerialize

我有这样的模型:

class Car(models.Model):
    name = models.CharField(max_length=255)


class CarImage(models.Model):
    car = models.ForeignKey(Car, related_name='photos')
    photo = models.ImageField(upload_to='car/')
对于序列化程序,我有:

class CarImageSerializer(serializer.ModelSerializer):
    class Meta:
        model = CarImage

class CarSerializer(serializer.ModelSerializer):
    photos = CarImageSerializer()
    class Meta:
        model = Car
        fields = ('id', 'name', 'photos',)
CarSerializer
的web界面加载时,默认情况下,
photos
字段上会出现
non_field_errors
。DRF是否支持这种情况?如果不是,最好的方法是什么? P.S我使用的是generic
createapieview

使用,您应该从另一种方式执行此操作:

class CarSerializer(serializer.ModelSerializer):
    photos = serializers.RelatedField(many=True)
    class Meta:
        model = Car
        fields = ('id', 'name', 'photos',)

也许你可以试试这个:

序列化程序.py

class CarImageSerializer(serializers.ModelSerializer):

    class Meta:
        model = CarImage


class CarSerializer(serializers.HyperlinkedModelSerializer):
    photos = serializers.HyperlinkedRelatedField(many=True,
                                                 view_name='carimage-list')

    class Meta:
        model = Car
        fields = ('id', 'name', 'photos',)
class CarImageList(ListCreateAPIView):
    queryset = CarImage.objects.all()
    serializer_class = CarImageSerializer


class CarList(ListCreateAPIView):
    queryset = Car.objects.all()
    serializer_class = CarSerializer
url(r'^carimage/$', CarImageList.as_view(), name='carimage-list'),
url(r'^car/$', CarList.as_view(), name='car-list'),
视图.py

class CarImageSerializer(serializers.ModelSerializer):

    class Meta:
        model = CarImage


class CarSerializer(serializers.HyperlinkedModelSerializer):
    photos = serializers.HyperlinkedRelatedField(many=True,
                                                 view_name='carimage-list')

    class Meta:
        model = Car
        fields = ('id', 'name', 'photos',)
class CarImageList(ListCreateAPIView):
    queryset = CarImage.objects.all()
    serializer_class = CarImageSerializer


class CarList(ListCreateAPIView):
    queryset = Car.objects.all()
    serializer_class = CarSerializer
url(r'^carimage/$', CarImageList.as_view(), name='carimage-list'),
url(r'^car/$', CarList.as_view(), name='car-list'),
url.py

class CarImageSerializer(serializers.ModelSerializer):

    class Meta:
        model = CarImage


class CarSerializer(serializers.HyperlinkedModelSerializer):
    photos = serializers.HyperlinkedRelatedField(many=True,
                                                 view_name='carimage-list')

    class Meta:
        model = Car
        fields = ('id', 'name', 'photos',)
class CarImageList(ListCreateAPIView):
    queryset = CarImage.objects.all()
    serializer_class = CarImageSerializer


class CarList(ListCreateAPIView):
    queryset = Car.objects.all()
    serializer_class = CarSerializer
url(r'^carimage/$', CarImageList.as_view(), name='carimage-list'),
url(r'^car/$', CarList.as_view(), name='car-list'),

你应该注意所有需要的进口。不保证,但您可以试一试。

如果我这样做,我在web界面上看不到照片字段。另外,反向关系插入是否由通用API视图处理?如果您找到/找到了答案,请告诉我,我将发布一个类似的问题。再次尝试发布到通过反向关系链接的模型。尚未找到答案!是否确实要使用
CreateAPIView
?它只能根据
post
创建新条目。如果还希望根据
get
显示条目,则应使用
ListCreateAPIView
?您的序列化程序类中有一个错误的输入错误:
serializer.ModelSerializer
。它必须是
序列化程序。ModelSerializer
。您肯定有这样一个:
来自rest\u框架导入序列化程序