django - pycharm 中导入模型的 Intellisense 问题
问题描述
将pycharm与python3一起使用时,我在尝试从文件结构中的一个类访问方法以导入另一个类时遇到问题。我可以使用这些方法,但它们不是由智能感知预先填充的,这使得它非常困难,因为我只是在学习 python。我的文件如下:
tictactoe
---- gameplay
| |--->migrations
| |---> init.py
| |---> admin.py
| |---> models.py
| |---> test.py
| |---> views.py
---- player
|---> migrations
|--->templates
|---> __init__.py
|---> admin.py
|---> apps.py
|---> models.py
|---> tests.py
|---> utils.py
|---> views.py
游戏玩法/Models.py
from __future__ import unicode_literals # if you use this put this first
from django.utils.encoding import python_2_unicode_compatible
from django.db import models
from django.db.models import Q
from django.contrib.auth.models import User
GAME_STATUS_CHOICES = (
('F', 'First Player To Move'),
('S', 'Second Player To Move'),
('W', 'First Player Wins'),
('L', 'Second Player Wins'),
('D', 'Draw')
)
class GameQuerySet(models.QuerySet):
def games_for_user(self, user):
return self.filter(
Q(first_player=user) | Q(secondplayer=user)
)
def active(self):
return self.filter(
Q(status='F') | Q(status='S')
)
@python_2_unicode_compatible
class Game(models.Model):
first_player = models.ForeignKey(User,related_name="games_first_player",
on_delete=models.CASCADE)
second_player = models.ForeignKey(User, related_name="games_second_player", on_delete=models.CASCADE)
start_time = models.DateTimeField(auto_now_add=True)
last_active = models.DateTimeField(auto_now=True)
status = models.CharField(max_length=1, default='F', choices=GAME_STATUS_CHOICES)
# returns a manager object, lets us interact with result set
objects = GameQuerySet.as_manager()
def __str__(self):
return "{0} vs {1}".format(self.first_player, self.second_player)
播放器/views.py
from django.shortcuts import render
from gameplay.models import Game
def home(request):
my_games = Game.objects.games_for_user(request.user)
active_games = my_games.active()
return render(request, "player/home.html",
{'games':active_games}
所以我的代码运行正常,但是当我输入 Game.objects 时。(games_for_user) 没有出现,即使我按ctrl+ space。我发现如果我这样做alt+/它有时会弹出,但不是通过正常的智能感知。当我输入 my_games 时也是如此。(活动不显示)。此外,作为一种学习体验,还有比我所拥有的更好的方法来显示文件结构。
编辑:
我发现如果我在变量 my_games 前面加上这样的返回类型
my_games: GameQuerySet = Game.objects.games_for_user(request.user)
active_games = my_games.active() (<- active did show up)
我只是想知道我的 objects = GameQuerySet.as_manager() 是否阻止我的智能感知进行预测,因为它不知道返回类型是什么?如果有人可以为我澄清这一点或解决我最初的问题,那将对我的学习有很大帮助。
解决方案
我发现的另一件事是我有社区版的 pycharm,它本身不支持智能感知进行 Web 开发。我升级了,很多我期望弹出的东西终于做到了。对于我的问题,我没有具体的解决方案,所以我把它放在这里,以便将来搜索初学者。祝大家好运。
推荐阅读
- javascript - 将 JavaScript 与 WTForms 一起使用
- firebase - Firebase Analytics - export userId
- xml - How to remove nodes from XML if attribute matches value in another file?
- python - Slow loading SQL Server table into pandas DataFrame
- reactjs - 同一页面上的多个反应下拉列表为每个下拉列表获取相同的值
- java - android:RecyclerView set adapter
- azure - Xamarin iOS 在 Azure 中是否可以为同一个 Web API 提供两个通知中心,一个处于生产模式,另一个处于开发模式?
- java - 从 Web SRC URL 生成文件
- excel - Excel 将一维数组转置为多维数组
- python - 检查是否包含字符串时获得完全匹配是行