Использование pycharm с python3 У меня возникает проблема при попытке доступа к методам из одного класса в файловой структуре для импорта в другой. Я могу использовать методы, но они не заполнены заранее intellisense, что делает его очень трудным, так как я только изучаю 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
Gameplay / 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 + пробел . Я обнаружил, что если я сделаю alt + / , он иногда всплывает, но не в обычном смысле слова. То же самое происходит, когда я набираю my_games. (активный не отображается). Кроме того, как опыт обучения, есть лучший способ показать структуру файла, чем у меня.
EDIT:
Я обнаружил, что если я предвожу свою переменную my_games с типом возврата, подобным этому
my_games: GameQuerySet = Game.objects.games_for_user(request.user)
active_games = my_games.active() (<- active did show up)
Мне было просто интересно, если мои объекты = GameQuerySet.as_manager () не позволяют моему интеллигенту предсказать, потому что он не знает, что такое возвращаемый тип? Если бы кто-нибудь мог уточнить это для меня или решить мою первоначальную проблему, это было бы большим подспорьем в моем обучении.