在发布此问题之前,我已经阅读了几个关于SOF的问题。但它们来自2012年,也非常令人困惑。 例如Django Rest Framework - Get related model field in serializer
我的问题很直接
models.py
class User(models.Model):
username = models.CharField(max_length=100,unique=True)
password = models.CharField(max_length=100,null=False,blank=False)
class Car(models.Model):
user = models.ForeignKey(User)
car_name = models.CharField(max_length=100,null=True,blank=True)
serializers.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username','password' )
class CarSerializer(serializers.ModelSerializer):
#user = ?? what should I write or is there any better approach for serializing Car objects
class Meta:
model = Car
fields = ('user','car_name')
views.py
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
class CarViewSet(viewsets.ModelViewSet):
queryset = Car.objects.all()
serializer_class = CarSerializer
请建议所有可能的方法。
另外1个查询。哪一个更好ModelSerializer
或HyperlinkModelSerializer
。因为我看到包含这两个的不同答案。
答案 0 :(得分:3)
你只需要这样做:
class CarSerializer(serializers.ModelSerializer):
user = UserSerializer()
class Meta:
model = Car
fields = ('user','car_name')
就是这样。
此外,您应该查看serializers.Field
和serializers.SerializerMethodField
的好意,您可以使用它们并根据需要自定义您的响应数据。
关于HyperlinkedModelSerializer
- ModelSerializer
的问题,非常清楚here:
HyperlinkedModelSerializer
与ModelSerializer
存在以下差异:
HyperlinkedIdentityField
的网址字段。HyperlinkedRelatedField
,而不是PrimaryKeyRelatedField
。希望有所帮助。