У меня есть два классаДжанго Добавить PrimaryKeyRelatedField Список
class Drink(models.Model):
name = models.CharField(max_length=100, blank=False, default='')
brand = models.TextField()
percentage = models.IntegerField()
class Drinking(models.Model):
amount = models.IntegerField(blank=False)
drinks = models.ForeignKey(Drink, related_name='drinks',blank = True,null=True)
и хотим добавить список напитков в модель Питьевой через REST POST.
В сериализаторе У меня есть следующий:
class DrinkingSerializer(serializers.ModelSerializer):
drinks = serializers.PrimaryKeyRelatedField(many=True, read_only=False ,queryset=Drink.objects.all())
class Meta:
model = Drinking
fields = ('pk','drinks','amount')
def create(self, validated_data):
return Drinking.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.amount = validated_data.get('amount', instance.amount)
instance.save()
return instance
Когда я пытаюсь опубликовать Drinking объект:
{
"drinks": [2],
"amount": 5
}
Я получаю ошибку, что Drinkings.drinks должен быть Пейте экземпляр. Я предполагаю, что мне нужно изменить набор запросов, чтобы получить первичный ключ от напитков, но я не знаю, как это сделать.
UPDATE Я сделал небольшое изменение в логике, так что каждый класс Питьевой может иметь только один напиток и одну сумму. Теперь это работает со следующим Serializer:
class DrinkingSerializer(serializers.ModelSerializer):
drink = serializers.PrimaryKeyRelatedField(many=False, read_only=False, queryset=Drink.objects.all())
Yup, pk = 2 существует, но если бы я отказался от brackits, это дало бы мне ошибку, что ожидался массив целых чисел. – Stef
Он работает, когда я устанавливаю много = False – Stef