2015-10-06 45 views
0

我知道有一種方法可以自動將值添加到syncdb數據庫,即Fixtures。但我想也許有一種方法可以檢測出選擇並自動在syncdb或遷移數據庫上創建這些數量的選擇。有選擇的Django CharField,自動添加可能的選擇到syncdb數據庫或遷移?

爲什麼我想這樣做的原因是:

SERVICE_TYPES = (
    ("SALE", _("Sale")), 
    ("RENT", _("Rent")) 
) 

class ServiceType(models.Model): 

    type_of_service = models.CharField(_("Type of service"), choices=SERVICE_TYPES, default=SERVICE_TYPES[0][0], max_length=20) 

    class Meta: 
     verbose_name = "Service Type" 
     verbose_name_plural = "Services Types" 

    def __str__(self): 
     pass 


class Service(models.Model): 
    service_type = models.ForeignKey(ServiceType) 
    product_family = models.ManyToManyField(ProductFamily) 

    class Meta: 
     verbose_name = "Service" 
     verbose_name_plural = "Services" 

    def __str__(self): 
     pass 

我想的是,在執行syncdb的服務類型自動生成數據庫的兩種可能的選擇,這樣的話我可以出售添加服務和租金可供選擇。

回答

0

您可以創建一個數據遷移,通過SERVICE_TYPES循環,並確保ServiceType的表反映了這一點。你可以看到你如何能做到在這裏:https://docs.djangoproject.com/en/1.8/topics/migrations/#data-migrations

你確定你不想做type_of_serviceService直接的屬性?如果你不打算給ServiceType添加額外的屬性,這是最有意義的。如果您要爲不同類型的服務添加額外的屬性,我寧願爲每種類型的服務創建一個不同的子類。

+0

謝謝你,到底是你說的,我會用它,使type_of_service作爲服務的屬性。但數據遷移是我真正需要知道的。 –

0

是的,你可以添加到這個模型:

SERVICE_TYPES = (
    ('sale', 'Sale'), 
    ('rent', 'Rent') 
) 
service_type=models.CharField(max_length=50, null=False, blank=False, choices=SERVICE_TYPES) 
相關問題