2016-04-29 27 views
0

多対多のフィールドで2つのモデルが関連しています。Djangoはunittestでは動作しませんが、adminで動作します

class Tires(models.Model): 
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) 
    brand = models.CharField(max_length=50) 

class Car(models.Model): 
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) 
    brand = models.CharField(max_length=50) 
    tires = models.ManyToManyField('Tires', blank=True) 

私は管理ページを通じて車にタイヤを追加したときにそれが正常に動作しますが、それは私のユニットテストでは動作しませんし、私は問題は(おそらく本当に簡単なもの)であるかを把握することはできません

これは私のunittestのです:

def test_many_to_many(self): 
    tires_1 = Tires(brand='bridgestone') 
    tires_1.save() 
    car_1 = Car(brand='BMW') 
    car_1.save() 
    car_1.tires.add(tires_1) 
    car_1.save() 

これは例外を発生しませんが、私はcar_1.tiresを印刷するとき、それは私が追加して、他の方法の周りにそれを試してみたcarthings.Tires.None 語りますcar_1からtires_1へ。 car_setでも同じ結果が得られます。私は多対多のフィールドに異なるクラスのオブジェクトを追加しようとしましたが、何が起こるかを見るだけでエラーが発生します。だからそれは追加の仕事のように見えるが、それは単に保存しないか何か?

+0

アポストロフィの間にブリヂストンを置きます。 – rfkortekaas

+0

@rfkortekaas私はそれを編集しますが、それは問題ではありませんが、ここで私のモデルを少し修正しました –

答えて

3

あなたはおそらくこれをやっている:「関連オブジェクトマネージャ」を表現したものです

>> print car_1.tires 
carthings.tires.None 

。クエリセットを返し、それが実際に関係の最初の要素を表示するクエリを実行しますので、その表現は、より意味のある

>> print car_1.tires.all() 
[<Tire 1>] 

: あなたは、おそらくのような何かをしたいです。

ちなみに、車のテーブルを更新する必要がないのでタイヤ関係に何かを追加した後でモデルをsaveにする必要はありません。

関連する問題