У меня есть следующие модели:
class BusStop(m.Model):
street_name = m.CharField(max_length=255)
class Meta:
ordering = ['street_name']
...
class Carrier(m.Model):
name = m.CharField(max_length=255)
...
class CarrierStop(m.Model):
bus_stop = m.ManyToManyField(BusStop, related_name='carrier_stop_fk')
carrier = m.ForeignKey(Carrier, on_delete=m.CASCADE, related_name='test_carrier_fk')
Я сделал сериализатор:
class CarrierStopSerializer(serializers.ModelSerializer):
carrier = serializers.StringRelatedField()
bus_stop = serializers.StringRelatedField(many=True)
class Meta:
model = CarrierStop
fields = ['id', 'carrier', 'bus_stop']
У меня есть несколько объектов моделей BusStop, и сериализатор дает представление, подобное этому:
[
{
"id": 1,
"carrier": "Fremiks",
"bus_stop": [
"Armii Krajowej",
"Kino Lot 01",
"Kosynierów I 02"
]
}
]
Поле bus_stop от CarrierStopSerializer возвращает автобусные остановки, упорядоченные по имени.Я хочу заказать его по идентификатору в промежуточной таблице carriertop_bus_stop, созданном полем Django ManyToMany.Я знаю, что я должен использовать поле SerializerMethod вместо StringRelatedField (или PrimaryKeyRelatedField, не имеет значения), но я не уверен, как именно это сделать.