В настоящее время ищем решение для рендеринга отношения многих ко многим, используя SQLAlchemy и Flask -restx.
Ниже я объединяю две таблицы Class и Country, где Class имеет много стран.
Я хочу получить доступ к другим полям Country в базе данных, в этом примере country.name и country.iso2. Я частично справился с этим в api.model, используя fields.list и установив атрибут отношения iso2. Тем не менее, это позволяет мне иметь страну.имя или страну.изо2, но не оба.
В идеале в этом примере я хочу получить также страну.изо2 название страны.
Любой совет будет приветствуем.
Модели SQLAlchemy
class_country = Table(
'class_country',
Base.metadata,
Column('class_id', Integer, ForeignKey('class.id')),
Column('country_id', Integer, ForeignKey('country.id'))
)
class Country(Base):
id = Column(Integer, primary_key=True, index=True)
name = Column(String(255), index=True, nullable=False)
iso2 = Column(String(2), nullable=False)
##
class Class(Base):
id = Column(Integer, primary_key=True, index=True)
name = Column(String(255), index=True, nullable=False)
##
# Relationships
country = relationship('Country', secondary=class_country, lazy='subquery')
Flask -Restx (Flask -Restful) API
model = api.model('Class',{
##
'country': fields.List(
fields.String()
),
##
})
Result:
##
"country": [
"Australia",
"New Zealand"
]
##
model = api.model('Class',{
##
'country': fields.List(
fields.String(attribute='iso2')
),
##
})
Result:
##
"country": [
"AU",
"NZ"
],
##
Запрос
Class.query.filter_by(name=name).first()