对不起,如果这是重复,我试着找不到运气。
我想知道,如何为相关模型指定查找字段。
例如,我有使用外键的模型,如此
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
作为查找?
感谢您的帮助。