DRF - 发布到 ManyToMany 字段

2023-12-28

在我的 Django 应用程序中:

模型.py:

class Destination(models.Model):
    name=models.CharField(max_length=30)

class Ride(models.Model):
    driver = models.ForeignKey('auth.User', related_name='rides_as_driver')
    destination=models.ForeignKey(Destination, related_name='rides_as_final_destination')
    leaving_time=models.TimeField()
    num_of_spots=models.IntegerField()
    passengers=models.ManyToManyField('auth.User', related_name="rides_as_passenger")
    mid_destinations=models.ManyToManyField(Destination, related_name='rides_as_middle_destination')

序列化器:

class RideSerializer(serializers.ModelSerializer):
    driver = serializers.ReadOnlyField(source='driver.username')

    class Meta:
        model = Ride
        fields = ('id', 'driver', 'destination', 'leaving_time',
                  'num_of_spots', 'passengers', 'mid_destinations')
        read_only_fields = ('id', 'driver', 'passengers', 'mid_destinations')

如你看到的,中间目的地是一个多对多字段。

我的问题是——如何 POST 到 ManyToMany 字段?

对于常规字段,我可以使用这样的 json 进行 POST,从我的安卓应用程序:

{ "destination" : "LA", "num_of_spots" : "3", "leaving_time" : "14:35"} etc.

如何 POST 到 ManyToMany 字段?

先谢谢了!


您应该采取两个步骤:

  1. Remove 'mid_destinations'从列表中read_only_fields

  2. 发送 POST 数据,例如{"mid_destinations": ["LA", "SF", "SD"], ...}

我假设您正在使用 DRF 3。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DRF - 发布到 ManyToMany 字段 的相关文章

随机推荐