无法序列化多个字段

2024-10-03 06:29:44 发布

您现在位置:Python中文网/ 问答频道 /正文

在将其标记为副本之前,我已经研究了以下问题:

Django Rest framework Serialize many to many field

Django rest framework serializing many to many field

我测试时没有显示payins的结果

序列化程序.py

class PayinsSerializer(serializers.ModelSerializer):
    class Meta:
        model = Payins
        fields = '__all__'

class UserStokvelSerializer(serializers.ModelSerializer):
    payins = PayinsSerializer(many=True)
    class Meta:
        model = Stokvel
        fields = '__all__'

型号.py

class Payins(models.Model):
    payin_date = models.DateField(default=timezone.now)
    payin_by = models.ForeignKey(User, on_delete=models.CASCADE)
    stokvel_payin = models.ForeignKey('Stokvel', on_delete=models.CASCADE, related_name="payin_user")
    payin_amount = models.IntegerField()

    def save(self, *args, **kwargs):
        stokvel = Stokvel.objects.get(id = self.stokvel_payin.id)
        stokvel.balance += self.payin_amount
        stokvel.save()
        super(Payins, self).save(*args, **kwargs)


class Stokvel(models.Model):
    stokvel_name = models.CharField(max_length=55)
    balance = models.IntegerField(default = 0)
    payouts = models.ManyToManyField(Payouts, related_name="stokvel_payouts")
    payins = models.ManyToManyField(Payins, related_name="stokvel_payins")
    group_admin = models.ForeignKey(User, on_delete=models.CASCADE, related_name="stokvel_group_admin")
    users = models.ManyToManyField(User, related_name="stokvel_users")
    invite_key = models.CharField(default = secrets.token_hex(15), max_length=55)

Tags: nameselfdefaultonmodelsmanyclassrelated
1条回答
网友
1楼 · 发布于 2024-10-03 06:29:44

能够使用this guide来解决这个问题:

通过修改此示例:

class TrackSerializer(serializers.ModelSerializer):
    class Meta:
        model = Track
        fields = ('order', 'title')

class AlbumSerializer(serializers.ModelSerializer):
    tracks = TrackSerializer(many=True)

    class Meta:
        model = Album
        fields = ('album_name', 'artist', 'tracks')

相关问题 更多 >