SQLAlchemy - удаление отношений между дочерним элементом и родителем и создание отношения с другим родителем. - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь настроить базу данных, используя flask -SQLAlchemy в flask / Python, которая содержит отношение один ко многим. Сложность = один, Страна = много, т. Е. Многие страны могут иметь одинаковую сложность, но в стране может быть только одна трудность.

У меня есть родительский класс:

class Difficulty(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, index=True, unique=True)
    countries = db.relationship('Country', backref='difficulty', lazy='dynamic')

    def assigntocountry(self, country):
        if not self.assignedtocountry(country):
            self.countries.append(country)

    def removefromcountry(self, country):
        if self.assignedtocountry(country):
            self.countries.remove(country)

    def assignedtocountry(self, country):
        return self.countries.filter_by(id=country.id).count() > 0

и ребенок класс:

class Country(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, index=True, unique=True)
    difficulty_id = db.Column(db.Integer, db.ForeignKey('difficulty.id'))

Используя три метода класса сложности, я смогу sh, чтобы иметь возможность удалить назначение сложности из страны и вернуть трудность_идентификатора обратно в нуль в объекте страны. И наоборот, я хочу присвоить объекту страны сложность и обновить ее идентификатор_удаления.

В настоящее время база данных удаляет ссылку и оставляет поле Трудность_ид прежним. Когда я тогда пытаюсь использовать метод назначенной страны, база данных зависает.

Возможно, что-то очевидное, что я здесь упускаю, и, надеюсь, вопрос отформатирован достаточно хорошо для новичка!

Приветствия, Гав

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

...