小编cod*_*der的帖子

禁止直接分配给相关集合的背面。改用addresses.set()

我将创建和更新嵌套关系,但它没有按预期工作我有三个模型用户、配置文件和地址。Profile 模型是 Address 模型中的 FK

配置文件/模型.py

class Address(models.Model):
   profile = models.ForeignKey(Profile, related_name='addresses', on_delete=models.CASCADE)
   country = models.CharField(max_length=255)
   city = models.CharField(max_length=255)
   state = models.CharField(max_length=100)
   zip_code = models.CharField(max_length=50)
   address = models.CharField(max_length=1000)
Run Code Online (Sandbox Code Playgroud)

配置文件/序列化器.py

class ProfileSerializer(serializers.ModelSerializer):
    addresses = AddressSerializer(many=True)

class Meta:
    model = Profile
    fields = ['gender', 'date_of_birth', 'hometown', 'phone', 'addresses']

def create(self, validated_data):
    addresses_data = validated_data.pop('addresses')
    profile = Profile.objects.create(**validated_data)
    for address_data in addresses_data:
        Address.objects.create(profile=profile, **address_data)
    return profile
Run Code Online (Sandbox Code Playgroud)

用户/序列化器.py

class UserSerializer(serializers.HyperlinkedModelSerializer):
profile = ProfileSerializer(required=True)
class Meta:
    model = User
    fields = ['id', 'url', 'first_name', 'last_name', …
Run Code Online (Sandbox Code Playgroud)

django django-models python-3.x django-rest-framework

7
推荐指数
1
解决办法
7515
查看次数