我知道有一种方法可以在syncdb上自动为数据库添加值,这就是Fixtures。但我想也许有办法检测选择并自动在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上,ServiceType会自动在数据库上生成两个可能的选项,这样我就可以添加可用的Sale和Rent选项来添加服务。
答案 0 :(得分:0)
您可以创建循环遍历SERVICE_TYPES
的数据迁移,并确保ServiceType
的表格反映了这一点。您可以在此处了解如何执行此操作:https://docs.djangoproject.com/en/1.8/topics/migrations/#data-migrations
您确定不想直接在type_of_service
上设置Service
属性吗?如果您不想向ServiceType
添加额外属性,则最有意义。如果您要为不同类型的服务添加额外的属性,我宁愿为每种类型的服务创建不同的子类。
答案 1 :(得分:0)
是的,您可以将其添加到模型中:
SERVICE_TYPES = (
('sale', 'Sale'),
('rent', 'Rent')
)
service_type=models.CharField(max_length=50, null=False, blank=False, choices=SERVICE_TYPES)