2015-07-07 4 views
3

В моем Джанго приложение:DRF - сообщение в поле ManyToMany

models.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') 

Serializer:

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') 

Как вы можете видеть, mid_destinations это поле ManyToMany.

Мой вопрос: Как я могу отправить POST в поле ManyToMany?

к обычным полям, я могу просто POST с JSON как это, с моей андроид приложение:

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

как я отправляю в поле ManyToMany?

Спасибо заранее!

ответ

0

два шага: 1. Удалите 'mid_destinations' из списка read_only_fields 2. Отправить данные POST как {"mid_destinations": ["LA", "SF", "SD"], ...}

Я предполагаю, что вы используете DRF 3.

+0

спасибо за ваш ответ. причина «mid_destination» - это поле read_only - я не хочу, чтобы пользователь должен был помещать поле mid_destination, то есть - пользователь должен иметь возможность создавать Ride WITHOUT с полем mid_destinations и WITH с полем mid_destination. могу ли я просто отправить пустой массив, когда у пользователя нет значения для него? –

+0

@OfekAgmon - Да, пустой массив - это именно то, что должен отправить клиентский конец, когда пользователь не предоставляет никакого значения mid_destination. – tamakisquare

+0

@tamakisquare - Я думаю, что данные будут похожи на {"destination": "LA", "num_of_spots": "3", "leave_time": "14:35", "mid_destinations": ["SF", "SD"] , ...} –

Смежные вопросы