Django Отношение ко многим ко многим добавляет не работает

Я использую ManyToManyField от Django для одной из моих моделей.

class Requirement(models.Model):
    name = models.CharField(max_length=200)


class Course(models.Model):
    requirements = models.ManyToManyField(Requirement)

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

c = Course.objects.get(title="STACK 100")
req = Requirement.objects.get(name="XYZ")
c.requirements.add(req)

Хотя это работает, когда я делаю это через оболочку Django manage.py, это не работает, когда я делаю это программно в скрипте. Я работаю с другими моделями в этом сценарии, и все работает нормально. И я даже знаю, что он успешно извлекает текущий курс и требования, когда я проверяю оба. Я не могу понять, в чем проблема!

РЕДАКТИРОВАТЬ:

Я не имею в виду, что поле требований курса остается пустым. Например, если я сделаю c.requirements.all (), я получу пустой список. Однако, если я сделаю этот подход через оболочку, список будет заполнен. Сценарий представляет собой сканер, который использует BeautifulSoup для сканирования веб-сайта. Я пытаюсь добавить требования к курсам в следующей функции:

def create_model_object(self, course_dict, req, sem):
    semester = Semester.objects.get(season=sem)

    #Checks if the course already exists in the database
    existing_matches = Course.objects.filter(number=course_dict["number"])
    if len(existing_matches) > 0:
        existing_course = existing_matches[0]

        if sem=="spring":
            existing_course.spring = semester
        else:
            existing_course.fall = semester
        existing_course.save()
        c = existing_course

    #Creates a new Course in the database
    else:
        if sem == "spring":
            new_course = Course(title=course_dict["title"],
                        spring=semester)
        else:
            new_course = Course(title=course_dict["title"],
                        fall=semester)
        new_course.save()
        c = new_course

    curr_req = Requirement.objects.get(name=req)
    c.requirements.add(curr_req)
    print(c.id)

РЕДАКТИРОВАТЬ 2:

После перехода в функцию я нашел следующее:

def __get__(self, instance, instance_type=None):
    if instance is None:
        return self

    rel_model = self.related.related_model

    manager = self.related_manager_cls(
        model=rel_model,
        query_field_name=self.related.field.name,
        prefetch_cache_name=self.related.field.related_query_name(),
        instance=instance,
        symmetrical=False,
        source_field_name=self.related.field.m2m_reverse_field_name(),
        target_field_name=self.related.field.m2m_field_name(),
        reverse=True,
        through=self.related.field.rel.through,
    )

    return manager

И, согласно моему отладчику, менеджер относится к типу planner (имя моего проекта) .Course.None.

Ответы на вопрос(0)

Ваш ответ на вопрос