fastcodedog 2.0.17__tar.gz → 3.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/PKG-INFO +4 -2
  2. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/README.md +2 -1
  3. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/README_zh.md +2 -1
  4. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/common/write_file.py +7 -0
  5. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/model/relationship.py +2 -0
  6. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/model/relationship.py +6 -0
  7. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/table.py +15 -1
  8. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/pyproject.toml +1 -1
  9. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/__init__.py +0 -0
  10. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/cli.py +0 -0
  11. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/common/__init__.py +0 -0
  12. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/common/source_file_path.py +0 -0
  13. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/__init__.py +0 -0
  14. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/api/__init__.py +0 -0
  15. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/api/api.py +0 -0
  16. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/api/endpoint.py +0 -0
  17. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/api/oauth2.py +0 -0
  18. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/api/param.py +0 -0
  19. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/common/__init__.py +0 -0
  20. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/common/get_context_object.py +0 -0
  21. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/common/get_relationship.py +0 -0
  22. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/context.py +0 -0
  23. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/contextbase.py +0 -0
  24. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/crud/__init__.py +0 -0
  25. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/crud/column.py +0 -0
  26. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/crud/crud.py +0 -0
  27. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/crud/default_value.py +0 -0
  28. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/crud/join_relationship.py +0 -0
  29. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/crud/query.py +0 -0
  30. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/model/__init__.py +0 -0
  31. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/model/column.py +0 -0
  32. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/model/computed_property.py +0 -0
  33. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/model/model.py +0 -0
  34. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/schema/__init__.py +0 -0
  35. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/schema/alias_generator.py +0 -0
  36. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/schema/field.py +0 -0
  37. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/schema/response_schema.py +0 -0
  38. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/schema/schema.py +0 -0
  39. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/schema/sub_object.py +0 -0
  40. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/setting/__init__.py +0 -0
  41. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/setting/config.py +0 -0
  42. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/setting/extend_app.py +0 -0
  43. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/setting/project.py +0 -0
  44. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/context/setting/source_directory.py +0 -0
  45. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/__init__.py +0 -0
  46. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/api/__init__.py +0 -0
  47. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/api/api.py +0 -0
  48. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/api/api_function.py +0 -0
  49. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/api/config.py +0 -0
  50. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/api/db.py +0 -0
  51. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/api/generation.py +0 -0
  52. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/api/main.py +0 -0
  53. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/api/oauth2.py +0 -0
  54. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/base/__init__.py +0 -0
  55. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/base/block.py +0 -0
  56. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/base/call.py +0 -0
  57. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/base/class_type.py +0 -0
  58. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/base/file.py +0 -0
  59. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/base/function.py +0 -0
  60. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/base/head_comment.py +0 -0
  61. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/base/line_break.py +0 -0
  62. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/base/location_finder.py +0 -0
  63. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/base/required_import.py +0 -0
  64. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/base/text.py +0 -0
  65. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/base/variable.py +0 -0
  66. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/commonfiles/__init__.py +0 -0
  67. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/commonfiles/configfiles/__init__.py +0 -0
  68. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/commonfiles/generation.py +0 -0
  69. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/commonfiles/main.py +0 -0
  70. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/commonfiles/oauthfiles/__init__.py +0 -0
  71. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/commonfiles/toolfiles/__init__.py +0 -0
  72. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/commonfiles/utilfiles/__init__.py +0 -0
  73. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/commonfiles/utilfiles/case_converter.py +0 -0
  74. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/commonfiles/utilfiles/log.py +0 -0
  75. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/crud/__init__.py +0 -0
  76. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/crud/crud.py +0 -0
  77. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/crud/crud_functions.py +0 -0
  78. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/crud/generation.py +0 -0
  79. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/crud/query_functions.py +0 -0
  80. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/crud/selectinload.py +0 -0
  81. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/model/__init__.py +0 -0
  82. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/model/base.py +0 -0
  83. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/model/column.py +0 -0
  84. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/model/computed_property.py +0 -0
  85. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/model/generation.py +0 -0
  86. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/model/init.py +0 -0
  87. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/model/model.py +0 -0
  88. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/model/relation_object.py +0 -0
  89. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/model/table_args.py +0 -0
  90. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/schema/__init__.py +0 -0
  91. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/schema/field.py +0 -0
  92. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/schema/generation.py +0 -0
  93. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/schema/response_schema.py +0 -0
  94. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/schema/schema.py +0 -0
  95. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/generation/schema/sub_object.py +0 -0
  96. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/__init__.py +0 -0
  97. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/model_and_schema_to_crud/__init__.py +0 -0
  98. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/model_and_schema_to_crud/default_values.py +0 -0
  99. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/model_and_schema_to_crud/prepare.py +0 -0
  100. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/model_and_schema_to_crud/queries.py +0 -0
  101. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/model_to_schema/__init__.py +0 -0
  102. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/model_to_schema/alias_generator.py +0 -0
  103. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/model_to_schema/no_input_fields.py +0 -0
  104. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/model_to_schema/no_response_fields.py +0 -0
  105. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/model_to_schema/prepare.py +0 -0
  106. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/model_to_schema/response_schemas.py +0 -0
  107. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/model_to_schema/specified_field_types.py +0 -0
  108. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/README.MD +0 -0
  109. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/__init__.py +0 -0
  110. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/after/__init__.py +0 -0
  111. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/after/computed_properties.py +0 -0
  112. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/after/disable_relationships.py +0 -0
  113. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/after/specified_class_names.py +0 -0
  114. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/before/__init__.py +0 -0
  115. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/before/additional_foreign_keys.py +0 -0
  116. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/before/specified_column_types.py +0 -0
  117. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/before/specified_relationship_names.py +0 -0
  118. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/column.py +0 -0
  119. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/pdm.py +0 -0
  120. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/prepare.py +0 -0
  121. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/reference.xml +0 -0
  122. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/pdm_to_model/table.xml +0 -0
  123. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/schema_and_crud_to_api/__init__.py +0 -0
  124. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/schema_and_crud_to_api/endpoint.py +0 -0
  125. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/schema_and_crud_to_api/prepare.py +0 -0
  126. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/schema_and_crud_to_api/schemas.py +0 -0
  127. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/prepare/schema_and_crud_to_api/validate_reponse_models.py +0 -0
  128. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/util/__init__.py +0 -0
  129. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/util/case_converter.py +0 -0
  130. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/util/deep_update.py +0 -0
  131. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/util/extractor.py +0 -0
  132. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/util/find_file.py +0 -0
  133. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/util/indent.py +0 -0
  134. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/util/inflect_wrapper.py +0 -0
  135. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/util/make_dirs.py +0 -0
  136. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/util/singleton.py +0 -0
  137. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/util/type_converter.py +0 -0
  138. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/util/valid_name.py +0 -0
  139. {fastcodedog-2.0.17 → fastcodedog-3.0.2}/fastcodedog/util/wrap_str_with_quotation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastcodedog
3
- Version: 2.0.17
3
+ Version: 3.0.2
4
4
  Summary:
5
5
  License: MIT
6
6
  Author: taohoo
@@ -19,4 +19,6 @@ Description-Content-Type: text/markdown
19
19
  Based on the pdm file(sap powerdesigner), automatically generate a FastAPI project.
20
20
  Including SQLAlchemy models and CRUD operations.
21
21
  FastAPI schemas and APIs.
22
- The database engine should be installed manually based on actual requirements.
22
+ The database engine should be installed manually based on actual requirements.
23
+ Version 3 and above temporarily reverts to multithreading and does not support coroutines.
24
+
@@ -1,4 +1,5 @@
1
1
  Based on the pdm file(sap powerdesigner), automatically generate a FastAPI project.
2
2
  Including SQLAlchemy models and CRUD operations.
3
3
  FastAPI schemas and APIs.
4
- The database engine should be installed manually based on actual requirements.
4
+ The database engine should be installed manually based on actual requirements.
5
+ Version 3 and above temporarily reverts to multithreading and does not support coroutines.
@@ -2,4 +2,5 @@
2
2
  基于pdm文件(sap powerdesigner),自动生成fastapi工程。
3
3
  包括sqlalchemy的model,crud。
4
4
  fastapi的schema,api。
5
- 数据库引擎根据实际需要安装。
5
+ 数据库引擎根据实际需要安装。
6
+ 3以上版本暂时退回到多线程,不支持协程。
@@ -26,6 +26,13 @@ def write_python_file(path, content):
26
26
  # 调用autopep8格式化文件
27
27
  # subprocess.run(['autopep8', '--in-place', '--aggressive', '--max-line-length=120', path], check=True)
28
28
  subprocess.run(['autopep8', '--in-place', '--max-line-length=120', path], check=True)
29
+ # 临时版本,把异步支持去掉,把文件中的 `async def` 替换为 `def`
30
+ with open(path, 'r+', encoding='utf-8') as f:
31
+ content = f.read()
32
+ content = content.replace('async def ', 'def ')
33
+ f.seek(0)
34
+ f.write(content)
35
+ f.truncate()
29
36
  print(f'writed {path}') # 先临时放这里,后续再改
30
37
  # # 调用flake8格式化文件
31
38
  # subprocess.run(['flake8', path], check=True)
@@ -19,3 +19,5 @@ class Relationship(ContextBase):
19
19
  self.disabled = False # 禁用。和上面的no_backup是一对
20
20
  self.from_join_table = False # 是否是join_table
21
21
  self.is_list = False # 是否是列表
22
+ self.primaryjoin = '' # 主连接条件
23
+ self.secondaryjoin = '' # 次连接条件
@@ -17,6 +17,8 @@ class Relationship(Variable):
17
17
  self.back_populates = context.back_populates # back_populates变量名
18
18
  self.no_back_populates = context.no_back_populates # 不生成back_populates
19
19
  # self.disabled = context.disabled # 禁用的时候,直接不创建relationship
20
+ self.primaryjoin = context.primaryjoin # 主连接条件
21
+ self.secondaryjoin = context.secondaryjoin
20
22
 
21
23
  self.value = self.get_value()
22
24
  self.comment = f"no back populates {self.back_populates}" if self.no_back_populates else ''
@@ -35,6 +37,10 @@ class Relationship(Variable):
35
37
  relationship_params.append(f"secondary='{self.secondary}'")
36
38
  if self.remote_side:
37
39
  relationship_params.append(f"remote_side={self.remote_side}")
40
+ if self.primaryjoin:
41
+ relationship_params.append(f"primaryjoin='{self.primaryjoin}'")
42
+ if self.secondaryjoin:
43
+ relationship_params.append(f"secondaryjoin='{self.secondaryjoin}'")
38
44
  if self.cascade:
39
45
  relationship_params.append(f"cascade='{self.cascade}'")
40
46
  if self.back_populates and not self.no_back_populates:
@@ -33,6 +33,10 @@ class Table:
33
33
  for child_reference in self.child.child_side_references:
34
34
  if child_reference.parent != self.parent:
35
35
  return child_reference
36
+ # 从自身到自身的多对多关系,比如,质检定单和普通采样定单之间的多对多关系
37
+ for child_reference in self.child.child_side_references:
38
+ if child_reference.child_column.code != self.child_column.code:
39
+ return child_reference
36
40
  return None
37
41
 
38
42
  def __init__(self, node, pdm_file):
@@ -146,9 +150,19 @@ class Table:
146
150
  back_populates_module = another_side_reference.parent.module
147
151
  secondary = reference.child.code
148
152
  secondary_object_name = reference.child.get_model_name() # crud中需要
149
- return {'name': name, 'original_name': original_name, 'back_populates_module': back_populates_module,
153
+ primaryjoin = f"{reference.parent.get_model_name()}.{reference.parent_column.code}=={reference.child.code}.c.{reference.child_column.code}"
154
+ secondaryjoin = f"{another_side_reference.parent.get_model_name()}.{another_side_reference.parent_column.code}=={another_side_reference.child.code}.c.{another_side_reference.child_column.code}"
155
+
156
+ ret = {'name': name, 'original_name': original_name, 'back_populates_module': back_populates_module,
150
157
  'back_populates_model': back_populates_model, 'back_populates': back_populates, 'secondary': secondary,
151
158
  'secondary_object_name': secondary_object_name, 'from_join_table': True, 'is_list': True}
159
+ if (reference.child == another_side_reference.child
160
+ and reference.parent == another_side_reference.parent
161
+ and reference.parent_column.code == another_side_reference.parent_column.code):
162
+ # 如果是同一个表的多对多关系
163
+ ret['primaryjoin'] = primaryjoin
164
+ ret['secondaryjoin'] = secondaryjoin
165
+ return ret
152
166
 
153
167
  def get_sub_object_name_by_foreign_key(self, foreign_key):
154
168
  """根据外键生成子对象名"""
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "fastcodedog"
3
- version = "2.0.17"
3
+ version = "3.0.2"
4
4
  description = ""
5
5
  authors = ["taohoo <taohoo@163.com>"]
6
6
  license = "MIT"