1

I'm new in flask and Sqlalchemy

I have 2 tables, company and activity, with many to many relation, like this:

activities_companies = db.Table(
    'activites_companies',
    db.Column('company1_id', db.Integer, db.ForeignKey('company1.id')),
    db.Column('activity_id', db.Integer, db.ForeignKey('activity.id')),
)


class Company1(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), nullable=False)
    governorate = db.Column(db.String(255), nullable=False)
    area = db.Column(db.String(255), nullable=False)

    activities = db.relationship(
        'Activity',
        secondary = activities_companies,
        backref = db.backref('companies'),
        lazy = 'dynamic'
    )


class Activity(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), nullable=False)
    chamber_id = db.Column(db.Integer, db.ForeignKey('chamber.id'))

I have a WTForms-form for company registration, that include company, name, address, etc... and Activities.

My question is how to add company activities and company ID in associated table.

if request.method == 'POST':
    new_company = Company1(
        name = form.name.data,
        governorate = form.governorate.data,
        area = form.area.data,
        activities = form.activity.data
    )

I received this error

AttributeError: 'str' object has no attribute '_sa_instance_state'

serghei
  • 3,069
  • 2
  • 30
  • 48
Ahmed
  • 11
  • 1
  • Does this answer your question? [Flask sqlalchemy many-to-many insert data](https://stackoverflow.com/questions/25668092/flask-sqlalchemy-many-to-many-insert-data) – rfkortekaas Feb 06 '21 at 09:29

1 Answers1

0

At first, create Activity instances, then assign the set of activities in the Company instance. Here's a reference you can follow: Flask sqlalchemy many-to-many insert data

Sindbaad
  • 96
  • 4