2009-09-01 23 views
4

外部キー値を取得するにはどうすればよいですか?私は年、シリーズ、エンジンタイプ、ボディスタイル、トランスミッション、ドライブトレインにリンクする共通の車両モデルを持っています...すべてが外部キーです。私は自分のアプリのためにこれらのフィールドの値を取得したいと思いますが、私はそれらについてどうやって行くのかと固執しています。どんなアイデアも高く評価されます。外部キー値を取得

class Model(models.Model): 

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


class Year(models.Model): 

    ALPHA_NUMERIC_CHOICES = (
     ('1', 'Numeric'), 
     ('A', 'Alphabetic'), 
) 

    year = models.PositiveSmallIntegerField() 
    position_7_char = models.CharField(max_length=1, choices=ALPHA_NUMERIC_CHOICES) 
    position_10 = models.CharField(max_length=1, blank=False) 

    def __unicode__(self): 
     return unicode(self.year) 


class Series(models.Model): 

    series = models.CharField(max_length=20, blank=True) 
    model = models.ForeignKey(Model) 
    date_added = models.DateField() 

    def __unicode__(self): 
     name = str(self.model)+" "+str(self.series) 
     return name 


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) 
    drive_train = models.ForeignKey(DriveTrain) 

    def __unicode__(self): 
     name = ''+str(self.year)+" "+str(self.series) 
     return name 


class Vehicle(models.Model): 

    stock_number = models.CharField(max_length=6, blank=False) 
    vin = models.CharField(max_length=17, blank=False) 
    common_vehicle = models.ForeignKey(CommonVehicle) 
    exterior_colour = models.ForeignKey(ExteriorColour) 
    interior_colour = models.ForeignKey(InteriorColour) 
    interior_type = models.ForeignKey(InteriorType) 
    odometer_unit = models.ForeignKey(OdometerUnit) 
    status = models.ForeignKey(Status) 
    odometer_reading = models.PositiveIntegerField() 
    selling_price = models.PositiveIntegerField() 
    purchase_date = models.DateField() 
    sales_description = models.CharField(max_length=60, blank=False) 

    def __unicode__(self): 
     return self.stock_numberodels.ForeignKey(CommonVehicle) 
+0

あなたの質問を少し明確にできますか?おそらくあなたのモデル定義を提供するでしょうか? –

答えて

3

実際のIDが必要ですか? my_vehicle_ref.series.idのようなものを試してみてください。

はまた、私はあなたが、例えば、my_vehicle_ref.series.model.modelをそれのプロパティのいずれかにアクセスできるようseries属性は右Seriesのインスタンスは、実際にそこにあることを知っ願っています。

+0

甘い...私はこれを試してみましょう –

+0

BTW ...私はテンプレートからこれらの値にアクセスしています...これはあなたが意味するものであれば確かではありませんが、vehicle.year.idは年を返すことになっています...右?私はDjangoに少し新しくなっているので、まだ完全に把握していません。 –

+0

(チュートリアル)[http://docs.djangoproject.com/ja/dev/intro/tutorial01/]を読みましたか?素晴らしいイントロです。 'vehicle.year.id'は' Year'の 'id'属性を返します。おそらく自動的に生成され、おそらくあなたが望むものではありません。提供されるモデル定義では、 'Year'には、ほとんどの人が伝統的にモデル年と考えるものと一致する属性はありません。 'model_year = CharField(max_length = 6) '属性、またはそれに類するものを追加したいかもしれません。 –

関連する問題