如何告诉pycharm form.save()的返回类型,在本例中是 CategoryQuestion 对象?
def category_ask(request):
if request.method == 'POST':
form = CategoryQuestion_form(request.POST)
if form.is_valid():
question = form.save(commit=False)
question.who = request.user
question.dat<tab>
答案 0 :(得分:5)
使用“断言isinstance(x,类型)”来伪造pycharm以了解本地变量的正确类型。然后Pycharm知道正确的类型,并且标签完成将起作用:
def category_ask(request):
if request.method == 'POST':
form = CategoryQuestion_form(request.POST)
if form.is_valid():
question = form.save(commit=False)
assert isinstance(question, models.CategoryQuestion)
question.who = request.user
question.date_created<tab>
从pycharm 1.2开始,遗憾的是你不能只使用一个未经检查的“ isinstance()”,断言是必需的。
答案 1 :(得分:4)
PyCharm 3(不确定早期版本)支持通过:type 或 @type docstrings对局部变量(以及参数)进行类型提示。
def category_ask(request):
if request.method == 'POST':
form = CategoryQuestion_form(request.POST)
if form.is_valid():
# :type models.CategoryQuestion
question = form.save(commit=False)
question.who = request.user
question.dat<tab>
查看官方文档:http://www.jetbrains.com/pycharm/webhelp/type-hinting-in-pycharm.html#d68026e604
答案 2 :(得分:3)
在Pycharm 3中, @type 提示局部变量很挑剔,但有效。它必须出现在赋值后的行上,并且似乎需要三重引用语法:
if form.is_valid():
question = form.save()
"""@type : CategoryQuestion"""
question.dat<tab>
查看官方文档:http://www.jetbrains.com/pycharm/webhelp/type-hinting-in-pycharm.html#d68026e604
答案 3 :(得分:0)
对于使用python3.6及更高版本的用户:
Type Hinting现在是python的一部分,可以与pycharm一起使用。
您可以在变量名称后添加:
,以提示其类型,例如some_varibale: str
。相同的规则适用于参数。
因此,在这种情况下,该变量的提示方式为CategoryQuestion
:
question: CategoryQuestion = form.save(commit=False)
要了解如何键入提示,例如filter
,请参见here
您还可以使用django_hint,它具有专门用于Django的类型提示类。