2017-11-30 10 views
0

테이블간에 관계를 추가하는 방법을 알 수 없습니다.peewee에서 CompositeKey 및 ForeignKeyField를 사용하는 방법

class MyModel(BaseModel): 
    a = peewee.TextField() 
    b = peewee.TextField() 
    c = peewee.IntegerField() 
    d = peewee.TextField() 
    e = peewee.FloatField() 
    f = peewee.FloatField() 

    class Meta: 
     primary_key = peewee.CompositeKey('a', 'b', 'c', 'd') 


class RModel(BaseModel): 
    """ 
    """ 
    record = peewee.ForeignKeyField(MyModel, related_name='record') 
    date = peewee.DateTimeField(default=datetime.datetime.now) 

난 'A', 'B', 'C', MyModel에서 'D'필드는 특정 조합을 만들 수 있음을 보장하고 싶다. (독특한 함께)

나는 또한 여전히

AttributeError: 'CompositeKey' object has no attribute 'get_db_field' 

답변

0

Peewee 복합 외래 키를 지원하지 않습니다 점점 ​​오전 외래 키

이 표에 RModel 테이블에 관계를 추가하고 싶습니다. 다음과 같이하고 싶을 것입니다 :

class RModel(BaseModel): 
    a = peewee.TextField() 
    b = peewee.TextField() 
    c = peewee.IntegerField() 
    d = peewee.TextField() 

    class Meta: 
     constraints = ['...(optional) sql for constraint...'] 

    @property 
    def my_model(self): 
     return MyModel.get(
      (MyModel.a == self.a) & 
      (MyModel.b == self.b) & 
      (MyModel.c == self.c) & 
      (MyModel.d == self.d))