【发布时间】:2020-05-20 11:43:43
【问题描述】:
我正在使用 Python 3.7、Django 2.0 和 django-address==0.2.1 模块 (https://pypi.org/project/django-address/)。地址模块似乎为我的应用程序自动创建迁移和导入模型,这很好。我想创建一个
def get_by_natural_key(self, name):
return self.get_or_create(...fields...)[0]
AddressField 模型的方法(为了更容易地创建 YAML 数据)。是否可以将其添加到 AddressField 模型中而不更改作为安装此应用程序的一部分下载的核心文件?为该模型创建的 MySQL 表是
+
| address_address | CREATE TABLE `address_address` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`street_number` varchar(20) COLLATE utf8_bin NOT NULL,
`route` varchar(100) COLLATE utf8_bin NOT NULL,
`raw` varchar(200) COLLATE utf8_bin NOT NULL,
`formatted` varchar(200) COLLATE utf8_bin NOT NULL,
`latitude` double DEFAULT NULL,
`longitude` double DEFAULT NULL,
`locality_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `address_address_locality_id_5dd79609_fk_address_locality_id` (`locality_id`),
CONSTRAINT `address_address_locality_id_5dd79609_fk_address_locality_id` FOREIGN KEY (`locality_id`) REFERENCES `address_locality` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin |
+-----------------+-------------------------------------
虽然不确定这个表结构与我的问题有多相关。
【问题讨论】:
-
您是否要向模型中添加字段?还是只添加一个新方法?
-
如果只是附加方法,您正在寻找猴子修补模型:stackoverflow.com/a/24668215/1637351
-
我只是想为现有模型添加一个额外的方法。这个 monkey_patch 的东西看起来很有前途。我试试看。
-
您可能会创建一个第三方应用程序模块来定义应用程序配置,然后在
ready函数中连接新方法。
标签: python django python-3.x django-models extend