Почему вы получаете сообщение `сторона множества "многие ко многим" запрещена. Используйте ....set() вместо этого` в django-pytest?

Я изучаю django - pytest.

Я читаю форум, но не нахожу ответа. Пожалуйста, помогите мне.

Задача: создать тест для api запроса (django-pytest).

Я использую две основные библиотеки:

Модель 'Course' имеет отношение many-to-many

Я генерирую содержимое для базы данных через - 'Model Bakery' и после вставки при заполнении базы данных

Но я не могу понять

Когда я запускаю тест, я получаю ошибку

short test summary info 

 FAILED tests/students/test_courses_api.py::test_example - TypeError: Direct assignment to the 
 forward side of a many-to-many set is prohibited. Use student.set() instead.

 1 failed, 1 warning in 9.86s

Почему я получаю сообщение side of a many-to-many set is prohibited. Use student.set() instead ?

Что я сделал не так, если в документации написано о make_m2m=True:

По умолчанию Model Bakery не создает связанные экземпляры для отношений "многие-ко-многим". Если вы хотите, чтобы они были созданы, вы должны включить его следующим образом:

@pytest.mark.django_db()
def test_example(
  name_stude = get_name_random, # the example is down
  title = get_courses_random, 
  username = getUser,           # the example is down
  api_client = api_client        # the example is down
  ):

#Arrange
  student = baker.make( 
    "students.Student",
    name = name_stude,
    # _quantity = 3,
 )


  title_course = baker.make(
    "students.Course",
     name = title,
    )


  Student.objects.create(
    name=student.name,
  )

  Course.objects.create( # has many-to-many
    student = username,
    name = title_course.name,
    make_m2m=True
  )

  

  #Act    
  api_client = APIClient()
  response = api_client.get('/courses/')

  # Accert
  assert response.status_code
  data = response.json()
  assert  data
  
def get_courses_random():
  name = random.choice(
    [
      "...",
      "...",
      "...",
    ]
  )
  return name
@pytest.fixture
def getUser():
    return User.objects.create_user('admin')
def api_client():
    return APIClient()

и еще один вопрос.

Какой код для промежуточной таблицы/модели в django-pytest ?

Спасибо за помощь

Вернуться на верх