Django Rest Framework - 为相关的ModelSerializer指定自定义查找字段

时间:2015-05-23 05:01:16

标签: django django-rest-framework

对不起,如果这是重复,我试着找不到运气。

我想知道,如何为相关模型指定查找字段。

例如,我有使用外键的模型,如此

class Quiz(models.Model):                                                                                      
    guid = models.CharField(max_length=11, unique=True, blank=True)

class Result(models.Model):
    guid = models.CharField(max_length=11, unique=True, blank=True)
    quiz = models.ForeignKey(Quiz)

在这里,我使用guid作为我的唯一标识符,我的模型序列化程序如下所示。

class QuizSerializer(serializers.ModelSerializer):                                                                                 
    results = ResultSerializer(many=True, required=False)

    class Meta:
        model = Quiz
        fields = ('guid', 'results')

class ResultSerializer(serializers.ModelSerializer):
    #lookup_field = 'guid' => Does not seem to work??

    class Meta:
        model = BroncoResult
        fields = ('guid',)

在视图中我使用viewsets.ModelViewSet

class QuizViewSet(viewsets.ModelViewSet):                                                                                          
    queryset = Quiz.objects.all()
    serializer_class = QuizSerializer
    lookup_field = 'guid'

返回这样的数据 {"guid": "12312312312", "results": [{"guid": "45645645666"}, {"guid": "78978978999"}]}

我可以在guid中为Quiz模型指定查询字段为QuizViewSet,但如何为{{1}指定查找字段为guid序列化器中的模型?

我似乎在PUT请求中收到以下错误 Result 我认为是因为它试图通过 {"results": [{"guid": ["Result with this Guid already exists."]} 检索记录而没有找到它,并抛出错误,因为它试图创建一个具有相同唯一guid的新记录。

任何团体都知道如何指定结果字段也使用id作为查找?

感谢您的帮助。

0 个答案:

没有答案