2013-10-05 31 views
1

何時在表中存儲常量值與元​​組的最佳做法是什麼?例如,是它更好地做到這一點:在元組中存儲常量vs表

class ModelA(models.Model): 
    SOME_VALUES = (
    (0, 'A1'), 
    (1, 'A2'), 
    (2, 'A3'), 
) 

    fieldA = models.IntegerField(choices=SOME_VALUES) 

或具有恆定的數值另一種模式:

class ConstantValue(models.Model): 
    text = model.CharField(max_length=2) 

class ModelA(models.Model): 
    fieldA = models.OneToOneField(ConstantValue) 

和夾具將填充ConstantValue

我在我的代碼中有上述組合,但我想要一致性。

那麼多對多的關係呢?我有一個常數如上的模型,另一個模型指向關係爲ManyToManyField的常數模型。它與Django tutorial's pizza example類似。不過,我想我可以有這樣的:

class Topping(models.Model): 
    TOPPINGS = (
    (0, 'Tomato'), 
    (1, 'Peppers'), 
    ... 
) 

    topping = models.IntegerField(choices=TOPPINGS) 

class Pizza(models.Model): 
    topping = models.ForeignKey(Topping) 
+0

將常量添加由網站的用戶? –

+0

不是,它們都是預定義的。 – user2233706

+0

在這種情況下,對它們進行硬編碼是很好的;不需要依賴數據庫。 –

回答

0

我有一個非常基本的答案:

每當您的域名是probaply改變,使用另一個(domain_)表(或其他類)像pizzaname;如果你沒有看到改變的機會 - 像性別(男/女/不知道)保持簡短,儘管性別(的條目)可能會改變,範圍不會(或很可能不會)