gpt4 book ai didi

django - 如何在Django Rest Framework中的REST API中为数组数据编写序列化程序?

转载 作者:行者123 更新时间:2023-12-01 08:54:49 29 4
gpt4 key购买 nike

我在Django中编写了基本模型序列化器,其中api模仿了数据模型。现在,我需要将用户首选项存储在数据库中。 api包含一个数组。

我的用户模型:

class User(models.Model):
email_id = models.EmailField(max_length=80, blank=True, primary_key=True)

class UserPreference(models.Model)
email_id = models.ForeignKey('User')
preference = models.CharField(maxlength=20)

理想的json发布请求看起来像这样
{
email:"abhishek@gmail.com"
preference : [ 'books', 'food', 'lifestyle', 'travel']
}

我希望将此json模式保存到 UserPreference模型中。这需要多次插入才能获得优先选择。有什么好的串行器设计呢?

我试过
class UserPreferenceSerializer(serializers.ModelSerializer):
class Meta:
model = UserPreference
fields = ('email_id', 'preference')

最佳答案

您可以像这样制作模型:

class UserPreference(models.Model)
email_id = models.ForeignKey('User')
preference = models.ManyToManyField('Preference') #create model for preferences

然后将自定义创建方法添加到序列化器中:
def create(self, validated_data):
user = self.context.get('user') #you can pass context={'user': self.request.user} in your view to the serializer
up = UserPreference.objects.create(email_id=user)
up.save()
preference = validated_data.get('preference', [])
up.preference.add(*preference)
up.save()
return up

关于django - 如何在Django Rest Framework中的REST API中为数组数据编写序列化程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29478941/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com