serializer.DictField не сохраняет в базу данных - PullRequest
0 голосов
/ 29 января 2019

У меня есть эта модель:

class x(model.Models):
    name = models.CharField(max_length=50, unique=True)
    y = models.ManyToManyField(Y, related_name='y', db_table='x_y',
                                     blank=False,null=False)

и этот сериализатор:

class Serializer(DynamicFieldsModelSerializer):
   class Meta:
       model = models.x
       fields = '__all__'

, когда я публикую данные в этой модели, мне нужно установить следующие поля:

'name':['some name'],'y':['1','2']

это создаст строку в базе данных x с:

id |имя

1 |какое-то имя

и две строки в базе данных x_y с:

id |x_id |y_id

1 |1 |1

2 |1 |2

проблема в том, что входная доза не посылает мне «имя» и «у», а отправляет мне «имя» и «у []», поэтому для получения данных мне нужно было добавить это кмой класс сериализатора:

y= serializers.DictField(child=serializers.IntegerField(min_value=0, max_value=2))

, но в результате ничего не будет сохранено в таблице x_y. Я не знаю, как решить эту проблему

1 Ответ

0 голосов
/ 30 января 2019

Одна проблема, которая выделяет меня в том, что вы используете DictField для обработки списка целых чисел.

Предполагая, что целые числа на самом деле являются первичным ключом вашей модели Y, пробовали ли вы использовать y = PrimaryKeyRelatedField(many=True)?Похоже, что вы будете после.

...