Я пытаюсь сохранить теги в пути к сквозной таблице, используя множество отношений, где путь - это список тегов, где тег может быть дубликатом, например:
path = ['div', 'div', 'div', 'div', 'div', 'ul', 'li', 'a']
ЕслиПуть выше имеет идентификатор 1, и я сохраняю теги с уникальным ограничением. Ожидается следующее в сквозной таблице:
- path_id |tag_id
- 1 ______ 1
- 1 ______ 1
- 1 ______ 1
- 1 ______ 1
- 1 ______ 1
- 1 ______ 2
- 1 ______ 3
- 1 ______ 4
Где 1, 3, 3 и 4 tag_id равны div
, ul
, li
и a
соответственно.
Однако я получаю следующую ошибку:
peewee.IntegrityError: UNIQUE constraint failed: path_tag_through.path_id, path_tag_through.tag_id
Что именно я здесь не так делаю? Я также не могу установить unique=False
.
Вот код для репликации:
import peewee
from peewee import *
db = SqliteDatabase('bs.db')
class BaseModel(Model):
class Meta:
database = db
class Tag(BaseModel):
name = CharField()
class Path(BaseModel):
name = CharField()
tags = ManyToManyField(Tag, backref='path')
PathTags = Path.tags.get_through_model()
db.create_tables([
Tag,
Path,
PathTags])
my_path = ['div', 'div', 'div', 'div', 'div', 'ul', 'li', 'a']
path_id = Path.insert(name='my_path').execute()
path_obj = Path.get(path_id)
for i in my_path:
path_obj.tags.add(i)