缺少 2 个必需的位置参数,但我不希望它们成为开始的参数?

missing 2 required positional arguments but I don't want them to be arguments to begin with?

这是我使用 Flask 的 python 代码的一部分:

class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    base_city = db.Column(db.String(120), nullable=False)
    about_me = db.Column(db.String(1000), nullable=False, default='comedy!')
    mic_submit = db.relationship('Mic', backref='initiator', lazy=True)
    mic_checkin = db.relationship('Checkins', backref='signee', lazy=True)

    def __init__(self, username, email, password, base_city, about_me, mic_submit, mic_checkin):
        self.username = username
        self.email = email
        self.password = password
        self.base_city = base_city
        self.about_me = about_me
        self.mic_submit = mic_submit
        self.mic_checkin=mic_checkin

    def __repr__(self):
        return f"User('{self.username}','{self.email}', '{self.password}', '{self.base_city}', '{self.about_me}', '{self.mic_submit}','{self.mic_checkin}')"


class RegisterSchema(ma.Schema):
    class Meta:
        fields = ('id', 'username', 'email', 'password', 'base_city', 'about_me')

register_schema = RegisterSchema()
registers_schema = RegisterSchema(many=True)

mic_submitmic_checkin 在那里是因为我希望 id 成为其他几个 tables

中的外键

这里是有问题的路线:

@app.route("/register", methods=['POST'])
def register():
    username = request.json['username']
    email = request.json['email']
    password = request.json['password']
    base_city = request.json['base_city']
    about_me = request.json['about_me']
    hashed_password = bcrypt.generate_password_hash(password)
    user = User(username=username, email=email, password=hashed_password, base_city=base_city, about_me=about_me)
    db.session.add(user)
    db.session.commit()

我的问题是当有人在网站上注册时我希望他们只提交 username emailpasswordbase cityabout_me 但后端的错误是:

Traceback (most recent call last):
  File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 2464, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 2450, in wsgi_app
    response = self.handle_exception(e)
  File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask_cors/extension.py", line 165, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 1867, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask_cors/extension.py", line 165, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/pm/ionic_apps/pobblebonk/backend/app.py", line 138, in register
    user = User(username=username, email=email, password=hashed_password, base_city=base_city, about_me=about_me)
TypeError: __init__() missing 2 required positional arguments: 'mic_submit' and 'mic_checkin'

但我不会要求他们提交 mic_submitmic_checkin 因为这些专栏只是让我确保 table 与其他的有关系两个 table。我该怎么办?

这里是javascript前端的APIService文件:

export default class APIService {

  static RegisterUser(username, email, password, base_city, about_me) {
    
    console.log('i am here')
      
    return fetch(`http://localhost:5000/register`, {
      'method':'POST',
      mode: 'cors',
      headers: {
    'Content-Type':'application/json'
      },
      body: JSON.stringify(username, email, password)
    })
    .then(resp => window.location.href = "login")
    .catch(error => console.log(error, "Not In the APIService"))
  }

您不必定义 init 方法。 Flask-SQLAlchemy 会为你生成它。这是满足您需要的用户 class:

class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    base_city = db.Column(db.String(120), nullable=False)
    about_me = db.Column(db.String(1000), nullable=False, default='comedy!')
    mic_submit = db.relationship('Mic', backref='initiator', lazy=True)
    mic_checkin = db.relationship('Checkins', backref='signee', lazy=True)

    def __repr__(self):
        return f"User('{self.username}','{self.email}', '{self.password}', '{self.base_city}', '{self.about_me}', '{self.mic_submit}','{self.mic_checkin}')"