会不会两次导入同一个文件?

时间:2011-10-28 14:50:30

标签: django django-models

我有一个模型文件。

从我的视图文件中导入模型文件

从我的视图文件中,我通过添加属性来改变特定函数中的模型文件。

如果仍然在同一个函数中我希望访问新模型属性,那么我是否必须重新导入模型文件

继承人我想要完成的事情

在我的模型文件中,我有一堆属性来衡量和排列人们举重的能力。他们可以测量和排名自己的10种不同的练习。我希望他们混合和匹配练习和排名。有10个练习,这使得数百个排名可能性,我不希望手动编码。这只适用于权重部分。

如果有人在数百种可能的方式中找到他们的排名,我希望代码检查排名属性是否存在。如果没有,我想将它添加到mysql数据库以及模型文件中。

for i in request.GET:
        a += i
        a += '+'
        b += i
        b += '_'

a = a.strip("+")
b = b.strip("_")
c = b + '_rank'

if c not in WeightsProfile.__doc__:


        shutil.move("models.py", "models.py"+"~")
        original = open("models.py"+"~", 'r')
        new = open("models.py", 'w')

        for line in original:
            new.write(line)
            if "Snatch_rank = models.IntegerField(max_length=4, default=0)" in line:
                new.write("    %s = models.IntegerField(max_length=30, default='0')" % c + '\n')

        new.close()
        original.close() 

        conn = mdb.connect('localhost', 'jamie', 'wiser9999', 'website')
        cursor = conn.cursor()
        cursor.execute("alter table mysite_weightsprofile add column %s integer not null; SET @rank=0; UPDATE mysite_weightsprofile SET %s = @rank:=@rank+1 order by %s DESC;" %  (c, c, a))
        cursor.close()
        conn.close()
    else:
        pass 

这是不好的做法

1 个答案:

答案 0 :(得分:1)

你没有改变“模型文件”,你改变模型的内存中表示 - 基本上是修补你自己的代码。所以,不,你不必重新导入任何东西 - 事实上,如果可以,你只需要覆盖你的更改 - 但是,这是糟糕的,糟糕的设计。也许如果你解释一下你想要完成的事情,有人可以告诉你一个更好的方法来解决它。