ValueError: Constraint must have a name

Рейтинг: 0Ответов: 1Опубликовано: 04.05.2023
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    content = db.Column(db.Text, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    # category_id = db.Column(db.Integer, db.ForeignKey('category.id'), nullable=True)

    def __repr__(self):
        return f"Post: {self.title}"


class Category(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    # posts = db.relationship('Post', backref='category', lazy='joined')

    def __repr__(self):
        return f"Category: {self.name}"

Ошибка заключается в следующем: когда я пытаюсь установить отношение между моделями один ко многим и сделать миграцию, возникает ошибка ValueError: Constraint must have a name после команды flask db upgrade. Я думал, что она возникает из-за того, что у меня в классе Post у атрибута category_id установлено nullable=False. Я поменял это, но это не исправило ситуацию. Я также пробовал откатывать миграции, но это не помогло.

Ответы

▲ 0

В db.ForeignKey('user.id') нужно добавить имя: db.ForeignKey('user.id', name='somename')