Wie sende ich Abfrageergebnisse an ein WTForm-Feld?

Ich verwende SQLalchemy mit vielen zu vielen Tabellen, um Blogpost-Tags zu verwalten. Ich benötige Hilfe beim Rendern der Tag-Werte in ein TextArea-Formularfeld, in dem sie bearbeitet werden können. Im Moment, wenn ich rendere, sehe ich die Suchabfrage.

Modell

Die Beziehung zwischen Tag und Post wird in "Tags" definiert.

class Tag(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), unique=True)
url = db.Column(db.String(120), unique=True)

def __init__(self, name, url):
    self.name = name
    self.url = url

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(80))
    body = db.Column(db.Text)
    pub_date = db.Column(db.DateTime)
    tags = db.relationship('Tag', secondary=posts_tags, backref='posts', lazy='dynamic')


class Tag(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), unique=True)
    url = db.Column(db.String(120), unique=True)

Mein Problem macht das Umbaufeld in WTF. Ich zeige die Abfrage im Feld anstelle der Ergebnisse an.

Ich sehe zwei Optionen, die behoben werden müssen, aber ich weiß auch nicht, wie ich das tun soll.

a.) Interagieren Sie in der Ansicht durch Tags und zeigen Sie die Werte an. b.) Übergeben Sie in einem benutzerdefinierten Feld die Beitrags-ID und führen Sie die a-Abfrage aus, bevor Sie das Feld rendern. Etwas wie das....

Field Hack Das funktioniert, aber Sie müssen wissen, wie die Post-ID dynamisch an das Feld übergeben wird. *

class TagListField(Field):
    widget = TextArea()

    def _value(self):
        q = Post.query.join(posts_tags, (posts_tags.c.post_id == {{ NEED HELP HERE}}))
        taglist = []
        for p in q:
            for t in p.tags:
                taglist.append(t.name)
        taglist
        return ", ".join(taglist)

    def process_formdata(self, valuelist):
        if valuelist:
            self.data = [x.strip() for x in valuelist[0].split(',')]
        else:
            self.data = []

Möchten Sie die Anzeige- und Feldoptionen sehen ... Vielen Dank und Fortschritt ...

Antworten auf die Frage(1)

Ihre Antwort auf die Frage