0

Flask-SQLAlchemy 프로젝트에 대한 내 사용자 모델에 다음 관계 필드가 있으며 사용자가 자동으로 자신을 따르도록 기본값을 설정할 수 있기를 원합니다. SQLAlchemy에서 관계의 기본값을 설정하는 방법이 있습니까? 그게 어떻게 생겼어?SQLAlchemy에서 관계에 대한 기본값을 설정하는 방법은 무엇입니까?

followed = db.relationship('User', secondary=followers, primaryjoin=(followers.c.follower_id == id), 
        secondaryjoin=(followers.c.followed_id == id), 
        backref=db.backref('followers', lazy='dynamic'), 
        lazy='dynamic') 

추시 기능이있다 : I는 참조 용으로 미구엘 Grinberg의 튜토리얼을 사용하고 있지만 내 프로젝트가 설정되어

def follow(self, user): 
     # returns an object if it succeeds, None if it fails 
     if not self.is_following(user): 
      self.followed.append(user) 
      return self 

나는 (사용자 db.session.add 할 수 없도록 .follow (user)). before_first_request에서 전에 해본 적이 있지만 unittesting은 문제가 있습니다. 사용자가 로그인되어 익명으로 처리되지 않았기 때문입니다. 초기화시 사용자가 기본값을 따르도록하면이 문제를 해결할 수 있습니다. 도와 주셔서 감사합니다!

+0

을 의미? –

+0

@ 아이언 (Iron) @Iron 사용자가 기본적으로 자신을 따르도록하려는 시도 였지만 사용자가 로그인하기 전에 current_user.follow (current_user)를 사용하여 (@ app.before_first_request에서) 수행 했으므로 익명 사용자. 이제 로그인 한 사용자가 기본적으로 자신을 따르도록하는 방법을 찾으려고합니다. (또는 모든 사용자가 기본적으로 자신을 따릅니다.) –

답변

1

사용자 모델에 새 메소드를 추가하십시오. 당신은 사용자가 로그인 한 후 ... 당신이 당신의`User`의 DB를 업데이트 할 수 없습니다

@staticmethod 
def follow(): 
    if not user.is_following(user): 
     user.follow(user) 
     db.session.add(user) 
     db.session.commit()  
+0

감사합니다! –

관련 문제