【发布时间】:2021-08-14 05:08:24
【问题描述】:
models.py
class Sequence(models.Model):
category_id = models.ForeignKey(SequenceCategory, on_delete=models.CASCADE)
description = models.TextField()
code = models.CharField(max_length=50)
total_divisions = models.IntegerField()
status = models.BooleanField(default=True)
def __str__(self):
return self.code
class SequenceValue(models.Model):
TYPE_CHOICES =(
('N', 'Numeric'),
('A', 'Alphabet')
)
sequence_id = models.ForeignKey(Sequence, on_delete=models.CASCADE, blank=True, null=True, related_name='Sequence_details')
type = models.CharField(max_length=100, choices=TYPE_CHOICES)
value = models.CharField(max_length=50)
starting_value = models.CharField(max_length=50, null=True, blank=True)
increment_value = models.CharField(max_length=50, null=True, blank=True)
def __str__(self):
return self.value
serializers.py
class SequenceValueSerializer(serializers.ModelSerializer):
class Meta:
model = SequenceValue
# fields = '__all__'
exclude = ['sequence_id']
class SequenceSerializer(serializers.ModelSerializer):
Sequence_details = SequenceValueSerializer()
class Meta:
model = Sequence
fields = '__all__'
def create(self, validate_data):
Sequence_details_data = validate_data.pop('Sequence_details')
sequence_id = Sequence.objects.create(**validate_data)
SequenceValue.objects.create(sequence_id=sequence_id, **Sequence_details_data)
return sequence_id
views.py
class SequenceCreate(ListCreateAPIView):
queryset = Sequence.objects.all()
serializer_class = SequenceSerializer
为什么我会收到错误消息?当我参考 n 篇文章时,我得到了一个解决方案,将 many=True 放在这样的位置。
Sequence_details = SequenceValueSerializer(many=True)
但是当我对此进行更改时,我无法获取序列详细信息字段。我该如何解决这个问题?请给个解决办法好吗?
实际错误-
尝试在序列化程序 SequenceValueSerializer 上获取字段 type 的值时出现 AttributeError。
序列化程序字段可能命名不正确,并且与 RelatedManager 实例上的任何属性或键都不匹配。
原始异常文本是:“RelatedManager”对象没有属性“类型”。
数据传递
Data - {
"Sequence_details": [{
"type": "N",
"value": "123",
"starting_value": "1",
"increment_value": "1"
}],
"description": "asd",
"code": "qwe",
"total_divisions": 2,
"status": false,
"category_id": 3
}
实际截图
【问题讨论】:
-
你要发送什么数据到这个视图?
-
您可以尝试使用docs.djangoproject.com/en/3.1/ref/models/fields/#default在字段上添加默认参数。
-
好吧,数据通过了- Data - { "Sequence_details": [{ "type": "N", "value": "123", "starting_value": "1", "increment_value" : "1" }], "description": "asd", "code": "qwe", "total_divisions": 2, "status": false, "category_id": 3 }
标签: python django django-rest-framework