0

私はそのような状況を持っています:

モデル:

class Test2(models.Model) {
  date = models.DateField(editable=False)
}

class Test(models.Model) {
  test2 = models.ForeignKey(Test2)
}

アクション:

for test_obj in Test.objects.all():
  test2_obj = test_obj.test2
  test2_obj.date = date.today()
  test2_obj.save()
  test_obj.save()

その後、日付test2_objは変更されません。なんで?test2_obj = test_obj.test2コピーですか?

4

1 に答える 1

0

私はtestappを作成し、あなたの問題をテストします

models.py

from django.db import models

class Test2(models.Model):
    date = models.DateField(editable=False)

class Test(models.Model):
    test2 = models.ForeignKey(Test2)

tests.py

from django.test import TestCase
from models import Test, Test2

from datetime import datetime, date

class SimpleTest(TestCase):
    def test_field_update(self):
        old_date = date(2012,11,11)
        current_date = datetime.today().date()

        t2 = Test2(date = old_date)
        t2.save()

        t1 = Test(test2 = t2)
        t1.save()


        for test_obj in Test.objects.all():
            test2_obj = test_obj.test2
            test2_obj.date = current_date
            test2_obj.save()
            test_obj.save()

        t2 = Test2.objects.all()[0]

        self.assertEqual(t2.date, current_date)

テストを実行する

.. >manage.py テスト testapp

エイリアス 'default' のテスト データベースを作成しています... . -------------------------------------------------- -------------------- 0.016 秒で 1 つのテストを実行

OK エイリアス 'default' のテスト データベースを破棄しています...

これは、投稿したものではなく、期待どおりに機能します。

于 2012-12-11T13:38:28.193 に答える