#arrays #python-3.x #fastapi #tortoise-orm
#массивы #python-3.x #fastapi #tortoise-orm
Вопрос:
Как создать arrayField() в TortoiseORM
from common.base_model import AbstractBaseModel
from tortoise.fields import CharField, BooleanField, ForeignKeyField, ArrayField
class City(AbstractBaseModel):
name = CharField(max_length=100, unique=True)
district = CharField(max_length=100, null=True)
state = CharField(max_length=100)
country = ArrayField() # not working
is_verified = BooleanField(default=True)
Комментарии:
1. Попробуйте улучшить свой вопрос. Вы пробовали что-нибудь другое? Где вы нашли
ArrayField
? Вы пытались прочитать документацию TortoiseORM?
Ответ №1:
В TortoiseORM нет ArrayField
, вот статья о полях в TortoiseORM из его документации.
Как вы можете видеть, в TortoiseORM нет соответствующего поля, поэтому вам нужно расширить существующий класс полей.
Я предлагаю расширить базовый класс, Field
потому что to_db_value
метод вашего подкласса должен возвращать тот же тип, что и метод расширенного класса полей to_db_value
, а в классе Field
он не указан.
В следующий раз старайтесь усерднее — читайте документацию и задавайте вопросы получше (добавляйте больше информации, показывайте свои попытки).
Ответ №2:
Для достижения желаемого результата, который, как я предполагаю, заключается в наличии поля для хранения нескольких стран, вам нужно будет создать другую таблицу для вашего country
поля и иметь связь «многие ко многим» между этой таблицей и вашей city
таблицей, это более обычная реализация, которая не требует расширения существующего класса полей.