Использование queryset внутри Primarykeyfield ModelSerializer в Django Rest
Я делаю простой create api для модели, у которой почти все поля являются внешними ключами для других моделей. Я пишу логику создания внутри сериализатора. Она работает нормально. Однако если я определяю все поля как pkrelated field в сериализаторе, он запрашивает атрибут queryset. Почему он это спрашивает. А если я поставлю queryset и импортирую все объекты (queryset= Example.objects.all()), не будет ли это делать код и api медленным, так как он импортирует все объекты из модели Example. И еще, в чем его польза?
Моя модель:
class Example(TimeStampAbstractModel):
abc = models.ForeignKey(User,....
xyz_info = models.ForeignKey(XYZ,...
mnp = models.ForeignKey(MNP,......
status = models.CharField(....blank=True)
Мой сериализатор:
class AttendanceSerializer(serializers.ModelSerializer):
xyz_info = serializers.PrimaryKeyRelatedField(required=True,
queryset=XYZ.objects.all())
mnp= serializers.PrimaryKeyRelatedField(required=True,
queryset=MNP.objects.all())
#mnp = serializers.IntegerField(required=True)
status = serializers.CharField(required=True)
class Meta:
model = Attendance
fields = ['xyz_info','mnp','status']
def create(self, validated_data):
.............
В приведенном выше классе сериализатора, если я не определил все эти файлы в сериализаторе, он работает нормально. Но если я определяю их как pkfield, как указано выше (я передаю только id в теле из frontend), он запрашивает queryset. Почему он запрашивает queryset и каково его использование? Также могу ли я определить их как integarfield? Когда определять как pkfield, а когда как integarfield?