django - 如何从一个端点创建或更新多个不同模型的对象
问题描述
如何从一个端点更新多个不同模型类型的对象。我尝试了很多方法,但仍然失败。我尝试了嵌套序列化程序和创建方法,但它仍然无法正常工作
class Student(models.Model):
name = models.CharField(max_length=300)
sex = models.CharField(choices=SEX_CHOICES,max_length=255,
null=True)
Category = models.CharField(max_length=100, null=True)
def __str__(self):
return self.name
class Registration(models.Model):
registration_no = models.CharField(max_length=255,
unique=True)
student = models.OneToOneField(Student,
on_delete= models.CASCADE, related_name='registrations')
def __str__(self):
return self.registration_no
class RegistrationSerializer(serializers.ModelSerializer):
class Meta:
model = Registration
fields = '__all__'
class StudentSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = '__all__'
class StudentDataMigrateSerializer(serializers.Serializer):
student = StudentSerializer()
registation = RegistrationSerializer()
解决方案
默认情况下,在 Django Rest Framework 中,嵌套的序列化程序是只读的。要拥有可写的嵌套序列化程序,您需要实现create()
和/或update()
方法。看看官方文档https://www.django-rest-framework.org/api-guide/relations/#writable-nested-serializers
class StudentDataMigrateSerializer(serializers.Serializer):
student = StudentSerializer()
registation = RegistrationSerializer()
def create(self, validated_data):
# save the data
推荐阅读
- python - 如何提高时间序列的符合过滤性能?
- python-3.x - 分层多类分类
- python-3.x - 根据来自另一个张量的值将值分配给一个张量
- r - 使用 R 中的 DBI 包连接到 teradata
- c# - 撤消计算并将其从运行总计中减去
- python-3.x - 找出人们喝咖啡的平均数量——几乎是正确的(在异常处理方面遇到了一些麻烦)
- c++ - 如何调用 GetAltMonthNames 来填充一个安全的外国语言环境月份字符串数组?
- android - recyclerview of recyclerviews with title
- regex - 如何在 VB.net 中获取文本字符串并检查 Regex 是否找到文本字符串?
- javascript - 检查元素是否具有类,如果确实将其添加到 n 元素 - 但动态