【问题标题】:Get Foreign Key Value获取外键值
【发布时间】:2009-09-01 13:14:54
【问题描述】:

如何获取外键值?我有一个通用的车型,它链接到年份、系列、发动机类型、车身样式、变速器和传动系统……所有这些都是外键。我想为我的应用程序获取这些字段的值,但我不知道如何处理它们。任何想法都将受到高度赞赏。

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)

【问题讨论】:

  • 你能澄清一下你的问题吗?也许提供您的模型定义?

标签: django foreign-keys


【解决方案1】:

您需要实际的 ID?试试my_vehicle_ref.series.id

另外,我希望你知道series 属性确实是Series 的一个实例,所以你可以访问它的任何 属性,例如my_vehicle_ref.series.model.model

【讨论】:

  • 顺便说一句...我正在从模板访问这些值...不太确定这是否是您的意思,但是 vehicle.year.id 应该返回年份...对吗?我对 Django 有点陌生,所以我还没有完全掌握它。
  • 你有没有看过(教程)[docs.djangoproject.com/en/dev/intro/tutorial01/]?这是一个很好的介绍。 vehicle.year.id 将返回 idYear 属性,这可能是自动生成的,很可能不是您想要的。在提供的模型定义中,Year 没有任何属性与大多数人传统上认为的模型年份相匹配。您可能需要添加 model_year = CharField(max_length=6) 属性或类似属性。
  • 我还没有让它工作......我的想法已经用完了。
  • 究竟是什么不起作用?另外,你看完教程了吗?
  • 我只需要 ID,my_vehicle_ref.series_id 也可以工作并避免查询系列表,因为它只返回外键列的值。
猜你喜欢
  • 2019-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多