Как создать arrayField в TortoiseORM

#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 таблицей, это более обычная реализация, которая не требует расширения существующего класса полей.