如何将属性添加到Django应用python模块?

时间:2018-08-01 05:05:18

标签: python django

给出了一个名为whatmost的django应用,其中有一个名为Channel的模型,我们可以做类似的事情。

import mattermost
for channel in Channel.objects.all():
    print(channel)

我希望能够做这样的事情

import mattermost
mattermost.channels.list

我尝试过将带有def list()的channels.py添加到与mostmost / init .py ..

相同的文件夹中。

我遇到以下错误。

In [7]: reload(mattermost)
Out[7]: <module 'mattermost' from '/home/csmu/mipgen-django/mattermost/__init__.py'>

In [8]: mattermost.channels.list
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-8-d4715777f4f1> in <module>()
----> 1 mattermost.channels.list

AttributeError: module 'mattermost' has no attribute 'channels'

如何为django应用python模块添加属性?

channels.py的内容:

import mattermost

def list():
    for channel in mattermost.models.Channel.objects.all():
        print(channel)

2 个答案:

答案 0 :(得分:1)

尝试 from mattermost import channels print(channels.list())

结果是:

    In [1]: import mattermost

    In [2]: mattermost.channels.list()
    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-2-249466f32547> in <module>()
    ----> 1 mattermost.channels.list()

    AttributeError: module 'mattermost' has no attribute 'channels'

    In [3]: from mattermost import channels

    In [4]: mattermost.channels.list()
    list.stub

    In [5]: 

很近。

答案 1 :(得分:0)

我发现您可以通过将以下内容添加到mostest / __ init__py

中来做到这一点
#!/usr/bin/env python
import os, pkgutil
__all__ = list(module for _, module, _ in 
pkgutil.iter_modules([os.path.dirname(__file__)]))

然后进行以下工作

import mattermost
from mattermost import *
mattermost.channels.list()

为每个最重要的通道产生输出。