Flask Админ и отношение многие ко многим - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть отношение ко многим, и я использую flask административную библиотеку.

draw_subscription = db.Table(
    "DrawSubscription",
    db.Column("draw_id", db.Integer, db.ForeignKey("draw.id"), primary_key=True),
    db.Column(
        "participant_id", db.Integer, db.ForeignKey("participant.id"), primary_key=True
    ),
)


class Draw(db.Model):
    """..."""

    __tablename__ = "draw"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    description = db.Column(db.Text, nullable=True)
    in_processe = db.Column(db.Boolean, nullable=True, default=False)
    responsible_number = db.Column(db.String(120), unique=True, nullable=False)

    participants = db.relationship(
        "Participant", secondary=draw_subscription, backref="draws",
    )

    created_at = db.Column(
        db.DateTime, default=db.func.current_timestamp(), nullable=False
    )

class Participant(db.Model):
    """Participant"""

    __tablename__ = "participant"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(120), unique=False, nullable=False)
    number = db.Column(db.String(120), unique=True, nullable=False)

В моем коде администратора у меня есть:


class DrawModelView(ModelView):
    inline_models = (Participant,)
    form_excluded_columns = ("created_at", "in_process")
    column_searchable_list = (Draw.responsible_number,)

admin.add_view(DrawModelView(Draw, db.session))

My Проблема в том, что если участник существует в моей базе данных, я хочу выбрать его. Если он не существует, я хочу создать. Используя inline_models, я могу только создавать, без inline_models я только могу выбирать.

Есть ли способ выбрать существующую запись или создать новую?

...