1

我对 Python/Django 相当陌生。我想做的是单独存储汽车的描述,但同时我想(在 django admin 中)标记汽车描述,如下所示:

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 在那里是错误的(循环引用)。有什么办法可以解决吗?

4

3 回答 3

1

所有你需要的是:

类汽车(模型。模型):

    描述 = models.CharField(max_length=20)

完毕。更多的领域很好。否则,您会使事情复杂化。

您需要研究所谓的“关系建模”。

你正在做的是“过早的优化”,可能是“悲观化”。

于 2013-03-24T03:11:27.857 回答
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 有一个非常好的 API 用于查找你应该通过的相关对象(一旦你完成了教程)。

于 2013-03-24T04:17:58.627 回答
0

您可以查看 django 的文档,https://docs.djangoproject.com/en/dev/topics/db/queries/#one-to-one-relationships

如文档中所述,您可以直接访问一对一字段,

class CarDescription(models.Model):

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

它仅适用于汽车和汽车描述实例,否则将引发异常。

于 2013-03-24T07:12:14.267 回答