我有两个模型,学生和标记,我有一个学生列表,我需要在嵌套的序列化程序类中使用postman添加标记。如何选择现有的学生?
Models.py
class Student(models.Model):
name = models.CharField(max_length=50, null=False, blank=False)
roll_no = models.CharField(max_length=5, null=False, blank=False)
mobile_no = PhoneNumberField(null=False, blank=False, unique=True)
mail_id = models.EmailField(null=False, blank=False)
def __str__(self):
return self.name
class Marks(models.Model):
student = models.ForeignKey(Student, on_delete=models.CASCADE)
maths = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(100)])
science = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(100)])
social = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(100)])
def __str__(self):
return str(self.student)
Serializers.py
class StudentSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = '__all__'
class MarksSerializer(serializers.ModelSerializer):
student = StudentSerializer()
class Meta:
model = Marks
fields = '__all__'
如果我给予字典我正在创建新的学生,我不想创建上我想选择现有的学生,我怎么能这样做?
当你有一个嵌套序列化程序类时,如何通过postman发送数据?
1条答案
按热度按时间jv4diomz1#
如果您希望在添加标记时选择现有学生,而不是创建新学生,则可以考虑从MarksSerializer中删除StudentSerializer。您可以使用PrimaryKeyRelatedField,它允许您使用Student模型的主键表示关系。这样,当使用Postman创建标记时,您只需要发送学生的主键(或ID)。
Serializers.py
from rest_framework import serializers from .models import学生,标记
class StudentSerializer(serializers.ModelSerializer):
class MarksSerializer(serializers.ModelSerializer):
通过Postman发送数据:
通过Postman发送数据:
选择HTTP方法为POST。输入您尝试访问的API端点的URL。转到Body选项卡,选择raw和JSON(application/json)。按以下格式发送数据:
在这里,student是现有学生的ID。数学、科学和社会领域是该学生要加的分数。
如果您已经正确设置了一切,这应该工作,它不会创建一个新的学生,但选择一个现有的ID。