Завершение кода Поле внешнего ключа модели Pydev Django - PullRequest
2 голосов
/ 01 октября 2011

Завершение кода в Eclipse / pydev работает достойно для меня.Однако есть одна вещь, которая не работает так, как я хочу.Рассмотрим следующую модель django:

class ReletionTree(models.Model):
    mother = models.ForeignKey('RelationTree', blank=True, null=True)
    father = models.ForeignKey('RelationTree', blank=True, null=True)
    name = models.CharField()

rt = RelationTree.objects.get(name='Mary') #assume unique on Mary

Теперь к проблеме:

rt.        #--> will code complete and give me options mother/father/name
rt.mother. #--> will not code complete into mother/father/name, it will code 
           #    complete as if isinstance(rt.mother, models.ForeignKey) (I think)

Есть ли способ заставить Pydev понять, что я хочу, чтобы он кодировал полные внешние ключи, как если бы онитипа, на который он указывает (в вышеупомянутом случае RelationTree, а не models.ForeignKey)

Спасибо, Дэвид

Ответы [ 2 ]

1 голос
/ 01 октября 2011

Я очень сомневаюсь в этом (я также делаю Django и Eclipse), потому что Pydev не достаточно умен, чтобы понять странный метакласс, который Django использует для преобразования father = models.ForeignKey() в father = RelationTree() или что-то еще.

Python действительно трудно анализировать автозаполнителям, и PyDev и PyLint, похоже, полностью сдаются, когда дело доходит до метаклассов. (Пилинт всегда жалуется, что в моих модельных классах нет члена objects!)

0 голосов
/ 29 января 2015

Спустя 3 с лишним года, и мой 6-месячный проект все еще не завершен (=. Однако теперь я знаю, что:

  1. Вы должны использовать pycharm вместо eclipse + pyDev . По моему мнению, их бесплатная версия намного лучше для разработки на Python.
  2. Профессиональная редакция Pycharm также поддерживает завершение кода django. Это спасает меня много времени.
...