2013-03-24 100 views
1

我相當新的Python/Django。 我想這樣做的是單獨存放汽車的描述,但同時我便想(在Django管理)汽車描述是這樣的:Python/Django模型

class CarDescription(models.Model): 

    length = models.IntegerField(max_length=10) 
    def __unicode__(self): 
     return "description of the car no %d" % (Car.id) 


class Car(models.Model): 

    description = models.OneToOneField(CarDescription) 

我知道Car.id是錯誤的有(圓參考)。有什麼辦法解決它?

+1

爲什麼要單獨存儲它,如果存在1對1關係?它會讓你的生活更加艱難,沒有任何好處。 – Andrey 2013-03-24 00:54:01

+0

好吧,我想分解它,因爲它可能有很多領域。我寧願有兩個屬性數量較少的實體,而不是具有多個屬性的實體。 – JosephConrad 2013-03-24 00:57:20

+0

你的理由是什麼?你必須有這種瘋狂的正常化的真正的好理由。 – Andrey 2013-03-24 01:00:01

回答

1

您應該構建你的模型是這樣的:

class Car(models.Model): 

    # everything that has to do _only_ with a car 

class CarDescription(models.Model): 

    car = models.ForeignKey(Car) # each description can belong to only one car 
    length = models.IntegerField(max_length=10) 
    # other fields that have only to do with a description 

    def __unicode__(self): 
     return unicode("description of the car no %d" % (self.car.pk)) 

Django中有用於查找related objects你應該通過去(一旦你完成了tutorial)一個非常漂亮的API。

1

所有你需要的是:

 
class Car(models.Model): 

    description = models.CharField(max_length=20) 

完成。更多的領域都很好。否則你太過於複雜。

您需要研究一下所謂的「關係建模」。

你在做什麼是「不成熟的優化」,可能是「悲觀化」。