问题描述
我想创建一个仅包含一个UUIDField的字段mixin,作为包含该mixin的任何模型的主键,以便在某些模型上使用,但不是在所有模型上使用(某些模型的主键由外部程序定义) )。我希望我的大多数模型不使用AutoField作为其主键。具体来说,我正在设计一个简单的货币系统,并且有一个Wallet模型,该模型将从peewee建议您创建以初始化数据库的BaseModel类以及此UUID mixin继承。我的问题是,当我尝试database.create_tables([Wallet])
时,出现以下错误:
peewee.ImproperlyConfigured: database attribute does not appear to be set on the model: <Model: Wallet>
我的文件夹结构如下(我将省略__init__.py
文件):
models
|_ base_model.py
|_ currencies
|_ wallet.py
|_ mixins
|_ uuid_mixin.py
base_model.py:
db = SqliteDatabase('database.db',pragmas={
'foreign_keys': 1,'journal_mode': 'wal',})
class BaseModel(Model):
class Meta:
database = db
uuid_mixin.py:
import uuid
from peewee import UUIDField,Model
class UUIDMixin(Model):
id = UUIDField(primary_key=True,default=uuid.uuid4)
wallet.py:
from models import BaseModel,UUIDMixin
class Wallet(UUIDMixin,BaseModel):
pass
我尝试将Wallet类的继承顺序翻转为BaseModel,UUIDMixin
,错误消失了,但是它导致了钱包表的字段:{'id': <AutoField: Wallet.id>}
,而不是我期望的UUID 。我的代码有什么问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)