Правильный способ решения атрибута Default в DRF FormSerializer, вызывающего programError при первой миграции - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть устаревшая система, над которой я работаю, и она имеет FormSerializer следующим образом:

class SburblesFormSerializer(serializers.HyperlinkedModelSerializer):
    user = serializers.PrimaryKeyRelatedField(queryset=User.objects.all(),
                                              default=serializers.CurrentUserDefault())
    status = serializers.PrimaryKeyRelatedField(queryset=Status.objects.all(),
                                                default=serializers.CreateOnlyDefault(Status.objects.get(pk=1)))

И система имеет приспособление для заполнения этих статусов.

Когда я настраиваю новую среду, python manage.py migrate не работает, генерируя ProgrammingError

django.db.utils.ProgrammingError: relation "api_status" does not exist
LINE 1: ...i_status"."name", "api_status"."description" FROM "api_statu...

Затем, чтобы запустить миграцию, я могу удалить параметры по умолчанию из PrimaryKeyRelatedField, перенести и затем откатить изменения в этом файле сериализатора.

Но я хотел бы понять 2 вещи:

  • Почему Django пытается выполнить это, прежде чем вызыватьСериализатор
  • Как правильно решить эту проблему, не удаляя настройки по умолчанию и не возвращая их каждый раз, когда необходимо настроить систему на новом компьютере.
...