我有一个模型文件。
从我的视图文件中导入模型文件
从我的视图文件中,我通过添加属性来改变特定函数中的模型文件。
如果仍然在同一个函数中我希望访问新模型属性,那么我是否必须重新导入模型文件
继承人我想要完成的事情
在我的模型文件中,我有一堆属性来衡量和排列人们举重的能力。他们可以测量和排名自己的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
这是不好的做法
答案 0 :(得分:1)
你没有改变“模型文件”,你改变模型的内存中表示 - 基本上是修补你自己的代码。所以,不,你不必重新导入任何东西 - 事实上,如果可以,你只需要覆盖你的更改 - 但是,这是糟糕的,糟糕的设计。也许如果你解释一下你想要完成的事情,有人可以告诉你一个更好的方法来解决它。