Я пытаюсь сделать записи для своей базы данных веб-приложения для планирования курса в учреждении.Меня беспокоит то, что я не могу делать записи в промежуточной таблице, возникающей из отношения M2M в views.py, но он работает в оболочке
ValueError в / config / departement
Значение QuerySetточный поиск должен быть ограничен одним результатом с использованием нарезки.
Метод запроса: POST URL-адрес запроса: http://127.0.0.1:8000/config/departement Версия Django: 2.1.7 Тип исключения: ValueError Значение исключения:
Значение QuerySet для точного поиска должно быть ограничено одним результатом с использованием срезов.
Исключительное расположение: C: \ Program Files \ Python37 \ lib \ site-packages \ django \ db \ models \ lookups.py вprocess_rhs, строка 257 Исполняемый файл Python: C: \ Program Files \ Python37 \ python.exe Версия Python: 3.7.0 Путь к Python:
Traceback Переключиться в режим копирования и вставки
C:\Program Files\Python37\lib\site-packages\django\core\handlers\exception.py in inner
response = get_response(request)
...
▶ Local vars
C:\Program Files\Python37\lib\site-packages\django\core\handlers\base.py in _get_response
response = self.process_exception_by_middleware(e, request)
...
▶ Local vars
C:\Program Files\Python37\lib\site-packages\django\core\handlers\base.py in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
...
▶ Local vars
E:\PLACORESA\configuration\views.py in departemnent
cursus = get_object_or_404(Cursus, libelle_cursus=cursus )
...
▶ Local vars
C:\Program Files\Python37\lib\site-packages\django\shortcuts.py in get_object_or_404
return queryset.get(*args, **kwargs)
...
▶ Local vars
C:\Program Files\Python37\lib\site-packages\django\db\models\query.py in get
num = len(clone)
...
▶ Local vars
C:\Program Files\Python37\lib\site-packages\django\db\models\query.py in __len__
self._fetch_all()
...
▶ Local vars
C:\Program Files\Python37\lib\site-packages\django\db\models\query.py in _fetch_all
self._result_cache = list(self._iterable_class(self))
...
▶ Local vars
C:\Program Files\Python37\lib\site-packages\django\db\models\query.py in __iter__
results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
...
▶ Local vars
C:\Program Files\Python37\lib\site-packages\django\db\models\sql\compiler.py in execute_sql
sql, params = self.as_sql()
...
▶ Local vars
C:\Program Files\Python37\lib\site-packages\django\db\models\sql\compiler.py in as_sql
where, w_params = self.compile(self.where) if self.where is not None else ("", [])
...
▶ Local vars
C:\Program Files\Python37\lib\site-packages\django\db\models\sql\compiler.py in compile
sql, params = node.as_sql(self, self.connection)
...
▶ Local vars
C:\Program Files\Python37\lib\site-packages\django\db\models\sql\where.py in as_sql
sql, params = compiler.compile(child)
...
▶ Local vars
C:\Program Files\Python37\lib\site-packages\django\db\models\sql\compiler.py in compile
sql, params = node.as_sql(self, self.connection)
...
▶ Local vars
C:\Program Files\Python37\lib\site-packages\django\db\models\lookups.py in as_sql
rhs_sql, rhs_params = self.process_rhs(compiler, connection)
...
▶ Local vars
C:\Program Files\Python37\lib\site-packages\django\db\models\lookups.py in process_rhs
'The QuerySet value for an exact lookup must be limited to '
...
▶ Local vars
models.py
class Departement(models.Model):
code_departement=models.CharField("code du département", max_length=100, unique=True)
libelle_departement=models.CharField("Libellé du département", max_length=100)
faculte=models.ForeignKey("Faculte", on_delete=models.CASCADE)
cursus=models.ManyToManyField("Cursus", through="AvoirCursus")
class Cursus(models.Model):
code_cursus=models.CharField("Code du cursus", max_length=10, unique=True)
libelle_cursus=models.CharField("Libellé du cursus", max_length=100)
class AvoirCursus(models.Model):
cursus=models.ForeignKey("Cursus", on_delete=models.CASCADE)
departement=models.ForeignKey("Departement", on_delete=models.CASCADE)
views.py
if request.method == 'POST':
f = forms.Departement_Form(request.POST)
if f.is_valid():
dept = f.save(commit=False)
code_departement = f.cleaned_data['code_departement'].upper()
dept.code_departement = code_departement
cursus = f.cleaned_data['cursus']
dept.save()
cursus = get_object_or_404(Cursus, libelle_cursus=cursus )
print(cursus)
AvoirCursus.objects.create(departement=dept, cursus=cursus)
return redirect('configuration:lister_departement')