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

あなたに必要なのは:

クラス Car(models.Model):

    説明 = 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を確認できます。

ドキュメントで説明されているように、1 対 1 のフィールドに直接アクセスできます。

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 に答える