2015-07-21 69 views
0

如果你有一个模型:未使用模型*允许模型中的变量字段?

class Model(models.Model): 
    variable_name = value 
    variable_name2 = models.FieldType(default=value) 

有什么区别;是第一个允许的吗?那是什么样的变数?

i.e count = 2 vs count = models.IntegerField(default=2) 

跟进质询,

我知道这是什么本质上违背常数变量,但在那里,将所有实例之间共享,但仍然是可编辑的变量?

静态/常量变量似乎在所有实例之间共享,但根据定义,似乎它必须在代码中定义;而不是用户输入,这是我想要的。

class Dog(models.Model): var = 10; #这是静态变量,但是你想这是管理多变

实例=狗(____)#将获得VAR = 10

+0

'models。* Field' get in the db。其他事情不会。你被允许这样做,但说实话,除非它是某种常数,否则会期望奇怪的行为。 – NightShadeQueen

+0

它不只是被认为是所有实例之间共享的静态/常量变量?刚刚测试过,如果它保存在数据库中,它似乎是。 – snavien

回答

0

正如@NightShadeQueen说,该机型。*场场被保存到数据库。另一个是一个常数。

至于你的第二个问题,没有没有。这是一个常量,虽然您可以更改它,但它只会在实例的范围内保持不变。下面是这将意味着什么一个例子:

class Example(models.Model): 
    variable_name = 5 

def description(): 
    instance_a = Example() 
    instance_a.variable_name == 5 # True 
    instance_a.variable_name = 'hello' 
    instance_a.variable_name == 'hello' # True 
    instance_b = Example() 
    instance_b.variable_name == instance_a.variable_name # False 
    instance_b.variable_name == 5 # True 

你能做的最好的事情就是创建一个单独的模型来容纳你想重新用于每个用户的全局变量。

+0

您能否详细说明您对单件模型解决方案的意义? – snavien

+0

不允许多个实例的模型。 – schillingt

+0

嗯谢谢你,我想我需要找到另一种替代方案来寻找我正在寻找的东西,因为这与我的想法正好相反。 – snavien

相关问题