2010-02-02 61 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