在Django Rest Framework 3中,我想返回pk关系的unicode值,您可以使用serializer.StringRelatedField的方式,但我也需要该值可写。 StringRelatedField是只读的。什么是serializers.StringRelatedField的读/写等效项?
我不在乎API是否接受PUT或PUT上的字符串值(虽然接受字符串会很漂亮,并且会救我抓住所有的pks!)。 API只需要在GET上返回unicode字符串值。
我在想PrimaryKeyRelatedField可能是要走的路,但查询看起来像什么?
举例来说,如果我想的模式是“模式”,我想Model.name被序列化,这是什么命令样子:
name = serializers.PrimaryKeyRelatedField(queryset=Model.objects.get(pk=????))
我挣扎,因为我不知道如何从序列化程序对象获取pk以查询相关模型...
这是假设PrimaryKeyRelatedField是我当然需要的。这可能是完全错误的。
感谢
约翰
以下是根据要求,稍有改变为清楚起见,例如型号:
class CarModel(models.Model):
name = models.CharField(max_length=100,unique=True)
def __str__(self):
return self.name
class Car(models.Model):
name = models.CharField(max_length=100)
make = models.ForeignKey(CarMake)
car_model = models.ForeignKey(CarModel)
class CarSerializer(serializers.ModelSerializer):
car_model = serializers.StringRelatedField() //like this, but read/write
class Meta:
model = Car
在这个例子中,我序列化的汽车,试图返回CarModel的字符串值可以使用表单中的选择下拉菜单进行更新。 如果我使用不同的序列化程序,一个用于需要PK的POST,另一个用于返回字符串的其他所有内容,表单中的select指令变得非常混乱。
所以,理想情况下,我只是希望能够POST字符串值,并让API完成查找并将字符串保存为PK。
您能编辑您的问题也包括你的模型? – 2015-02-24 12:02:21
已添加。希望能帮助到你。 – John 2015-02-24 12:25:16