Django自定义序列化器如何输入ID / PK

时间:2015-10-10 08:38:32

标签: django django-rest-framework

我正在尝试使自定义序列化程序工作。不能使用模型序列化器,因为我将数据保存到多个模型中。这是我的代码:

class RushSerializer(serializers.Serializer):    
    keyword = serializers.IntegerField(read_only=True)
    url = serializers.URLField()  


    def save(self):
        keyword = self.validated_data['keyword']
        url = self.validated_data['url']
        Url1.objects.create(keyword=keyword, url=url)

我输入的数据如下:

nov = {'url': 'https://domain.com/'}             
nov['keyword'] = id

serializer = RushSerializer(data=nov)

它返回给我这个错误:

  

/ admin / keywords / kw / add /

中的KeyError      

'关键字'

这是模型本身:

class Url1(models.Model):

    keyword = models.ForeignKey(KW)
    url = models.URLField()

我的代码出了什么问题?我几乎尝试了anything from here,但似乎无法使其发挥作用。

编辑:为了澄清,如果我使用模型序列化器并且这样做,它就可以工作:

class Meta:
    model = Url1       
    fields = ('keyword', 'url')  

因此问题不在输入100%,而在串行器本身。

  • 如果我在没有read_only的情况下执行关键字,那么我会收到此错误:
  

ValueError at / admin / keywords / kw / add /无法分配" 104":   " Url1.keyword"必须是" KW"实例

0 个答案:

没有答案