我已经创建了基于 CharField 的自定义 Django 模型字段子类,但它使用 to_python 来确保返回的模型对象具有更复杂的对象(有些是列表,有些是具有特定格式的字典等)——我正在使用 MySQL所以某些 PostGreSql 字段类型不可用。
一切都很好,但 Pylint 认为这些字段中的所有值都是字符串,因此我在使用这些模型的代码上收到很多“不支持的成员资格测试”和“不可订阅的对象”警告。我可以单独禁用这些,但我更愿意让 Pylint 知道这些模型返回某些对象类型。类型提示没有帮助,例如:
class MealPrefs(models.Model):
user = ...foreign key...
prefs: dict = custom_fields.DictOfListsExtendsCharField(
default={'breakfast': ['cereal', 'toast'], 'lunch': []},
)
我知道某些内置的 Django 字段为 Pylint(CharField,IntegerField)返回正确的类型,并且某些其他扩展已经找到了指定其类型的方法,因此 Pylint 很高兴(MultiSelectField)但是深入研究他们的代码,我无法弄清楚指定返回类型的“魔术”在哪里。
(注意:这个问题与 INPUT:type of Django form fields 无关)
谢谢!