1
class News(models.Model):
  title = models.CharField(max_length=70)
  full_text = models.TextField()
  pub_date = models.DateField('-pub_date')

次に、python manage.py shell を実行します。 News.pub_date の値は None です

私はsqlite3を使用しています。データベースを開くと、日付の値があることがわかりました。しかし、オブジェクト pub_date を回復すると、None になります。s=News.objects.all()[0].pub_date ここにコードを入力した後、エラーは発生しません

>>> from face.models import News
>>> from datetime import datetime
>>> s=News()
>>> s.pub_date

>>> s=News()
>>> s.title="hgello"
>>> s.full_text="hello there"
>>> s.pub_date = datetime.now()
>>> s.show=True
>>> s.save()
>>> t=News.objects.all()
>>> t
[<News: This is title>, <News: second text>, <News: sample>, <News: hgello>]
>>> t=t[3]
>>> print t.pub_date
    None

*問題を解決しました。sqllite3のデータベースファイルを削除しました。最初は DateTimeField という名前でしたが、それを DateField に変更したためだと思います。しかし、変更の合間にsyncdbを実行しました。そのため、django は日付データを正常に保存できましたが、復元できませんでした。そして、re-syncdbは私が何度かやったのを助けませんでした。データベースの物理的な削除とデータベースの再構築構造のみが問題を解決しました。*

4

1 に答える 1

0

auto_now_addあなたはおそらくパラメータを設定したかったでしょう:

pub_date = models.DateField(auto_now_add=True)

.save()または、メソッドをオーバーライドすることもできます。

class News(models.Model):
    title = models.CharField(max_length=70)
    full_text = models.TextField()
    pub_date = models.DateField()

    def save(self, *args, **kwargs):
        if not self.id:
            self.pub_date = datetime.datetime.today()
        super(News, self).save(*args, **kwargs)
于 2012-08-23T10:32:07.770 に答える