first commit
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
<%
|
||||
model_name = entity.name.capitalize()
|
||||
relations = generator._process_relations(entity)
|
||||
%>
|
||||
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Boolean
|
||||
from sqlalchemy.orm import relationship
|
||||
from ..database import Base
|
||||
|
||||
class ${model_name}(Base):
|
||||
"""
|
||||
${entity.description or model_name + ' 模型'}
|
||||
对应数据库表: ${entity.name.lower()}s
|
||||
"""
|
||||
__tablename__ = "${entity.name.lower()}s"
|
||||
|
||||
# 主键字段
|
||||
% if not any(field['primary_key'] for field in entity.fields):
|
||||
id = Column(Integer, primary_key=True, index=True, doc="主键ID")
|
||||
% endif
|
||||
|
||||
% for field in entity.fields:
|
||||
## 字段定义: ${field['name']}
|
||||
${field['name']} = Column(
|
||||
${'String' if field['type'] == 'String' else 'Integer' if field['type'] in ('Long', 'Integer') else 'Boolean' if field['type'] == 'Boolean' else 'DateTime' if field['type'] == 'DateTime' else 'String'},
|
||||
% if field['type'] == 'String' and 'length' in field:
|
||||
length=${field['length']},
|
||||
% endif
|
||||
% if 'default' in field:
|
||||
default=${field['default']},
|
||||
% endif
|
||||
% if 'primary_key' in field:
|
||||
primary_key=True,
|
||||
% endif
|
||||
% if 'unique' in field and field['unique']:
|
||||
unique=True,
|
||||
% endif
|
||||
% if 'nullable' in field and not field['nullable']:
|
||||
nullable=False,
|
||||
% endif
|
||||
% if 'index' in field and field['index']:
|
||||
index=True,
|
||||
% endif
|
||||
doc="${field['description'] or field['name'] + '字段'}"
|
||||
)
|
||||
% endfor
|
||||
|
||||
# 关系定义
|
||||
% for rel in relations:
|
||||
## ${rel['type']} 关系: ${rel['name']}
|
||||
% if rel['type'] == 'one-to-many':
|
||||
${rel['name']} = relationship(
|
||||
"${rel['target'].capitalize()}",
|
||||
back_populates="${rel['reverse_name']}",
|
||||
doc="${rel['description'] or model_name + '的' + rel['name']}"
|
||||
)
|
||||
% elif rel['type'] == 'many-to-one':
|
||||
${rel['name']}_id = Column(Integer, ForeignKey("${rel['target']}s.id"))
|
||||
${rel['name']} = relationship(
|
||||
"${rel['target'].capitalize()}",
|
||||
back_populates="${rel['reverse_name']}",
|
||||
doc="${rel['description'] or '关联的' + rel['target']}"
|
||||
)
|
||||
% elif rel['type'] == 'many-to-many':
|
||||
${rel['name']} = relationship(
|
||||
"${rel['target'].capitalize()}",
|
||||
secondary="${rel['through']}",
|
||||
back_populates="${rel['reverse_name']}",
|
||||
doc="${rel['description'] or model_name + '的多对多关联'}"
|
||||
)
|
||||
% endif
|
||||
% endfor
|
||||
Reference in New Issue
Block a user