簡體   English   中英

如何在peewee中使用CompositeKey和ForeignKeyField

[英]How to use CompositeKey and ForeignKeyField in peewee

我不知道如何在表之間添加關系。

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)

我想保證MyModel中的'a','b','c','d'字段創建唯一的組合。 (唯一在一起)

我還想將此表RModel表的關系添加為ForeignKey

我還在

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

Peewee不支持復合外鍵。 您將需要執行以下操作:

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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM