2010-02-02 66 views
1

我试图为我的系统做一个自定义的后端,我碰到了一点障碍......我想让用户能够添加新的制造商/型号/系列,而不是已经通过表单在系统中。我不知道我怎么会去这个...我的模型看起来如下:自定义Django表格

class Manufacturer(models.Model): 
    MANUFACTURER_POPULARITY_CHOICES = (
    ('1', 'Primary'), 
    ('2', 'Secondary'), 
    ('3', 'Tertiary'), 
) 

    manufacturer = models.CharField(max_length=15, blank=False) 
    date_added = models.DateField() 
    manufacturer_popularity = models.CharField(max_length=1, 
     choices=MANUFACTURER_POPULARITY_CHOICES) 
    def __unicode__(self): 
    return self.manufacturer 

class Model(models.Model): 
    model = models.CharField(max_length=20, blank=False) 
    manufacturer = models.ForeignKey(Manufacturer) 
    date_added = models.DateField() 
    def __unicode__(self): 
    name = ''+str(self.manufacturer)+" "+str(self.model) 
    return name 

class Series(models.Model): 
    series = models.CharField(max_length=20, blank=True, null=True) 
    model = models.ForeignKey(Model) 
    date_added = models.DateField() 
    def __unicode__(self): 
    name = str(self.model)+" "+str(self.series) 
    return name 

class Engine(models.Model): 
    ENGINE_TYPE_CHOICES = (
    ('H', 'H'), 
    ('I', 'I'), 
    ('R', 'R'), 
    ('V', 'V'), 
    ('W', 'W'), 
) 

    FUEL_TYPE_CHOICES = (
    ('G', 'Gas'), 
    ('D', 'Diesel'), 
) 

    size = models.DecimalField(max_digits=2, decimal_places=1) 
    type = models.CharField(max_length=1, choices=ENGINE_TYPE_CHOICES) 
    cylinders = models.PositiveSmallIntegerField() 
    spec = models.CharField(max_length=20, blank=True, null=True) 
    fuel_type = models.CharField(max_length=1, choices=FUEL_TYPE_CHOICES) 

class CommonVehicle(models.Model): 
    year = models.ForeignKey(Year) 
    series = models.ForeignKey(Series) 
    engine = models.ForeignKey(Engine) 
    body_style = models.ForeignKey(BodyStyle) 
    transmission = models.ForeignKey(Transmission) 
    speeds = models.PositiveSmallIntegerField() 
    drive_train = models.ForeignKey(DriveTrain) 
    horse_power = models.PositiveSmallIntegerField() 
    litre_100km_city = models.DecimalField(max_digits=3, decimal_places=1) 
    litre_100km_hwy = models.DecimalField(max_digits=3, decimal_places=1) 
    def __unicode__(self): 
    name = ''+str(self.year)+" "+str(self.series) 
    return name 

回答

2

这似乎是一个Django模型的形式比较规范的工作。我会建议遵循http://docs.djangoproject.com/en/dev/topics/forms/modelforms/的文档。有关于如何从模型创建表单并将返回的提交保存到数据库的详细说明。

+0

我想我已经解决了这个问题......我已经很熟悉模型表单了,所以谢谢。 – Stephen 2010-02-02 08:14:11

+0

嗯,我想知道在你提出的问题中是否存在一个更深层次的问题。它似乎太聪明了,详细的问题很容易通过说“遵循文档”来回答,但看起来你有相对很好的规范化数据和一个非常适合模型化表单的模型。 – Clueless 2010-02-03 03:56:15