私はDjangoを使用していますが、Djangoモデルを使用するPythonスクリプトで問題が発生しています 私が使用しているスクリプトは、APIからデータを取得して、データベース。Django-get_or_create()with auto_now = True
私のモデル:
class Movie(models.Model):
title = models.CharField(max_length=511)
tmdb_id = models.IntegerField(null=True, blank=True)
release = models.DateField(null=True, blank=True)
poster = models.TextField(max_length=500, null=True)
runtime = models.IntegerField(null=True, blank=True)
description = models.TextField(null=True, blank=True)
edit = models.DateTimeField(auto_now=True, null=True, blank=True)
backdrop = models.TextField(max_length=500, null=True, blank=True)
popularity = models.TextField(null=True, blank=True)
スクリプト:
movies = tmdb.Movies().upcoming()
results = movies['results']
ids = []
for movie in results:
data, created = Movie.objects.get_or_create(title=movie['title'],
tmdb_id=movie['id'],
release=movie['release_date'],
description=movie['overview'],
backdrop=movie['backdrop_path'],
poster=movie['poster_path'],
popularity=movie['popularity'])
私がいる問題は、私は、スクリプトを実行するたびに編集フィールドが変更されるため、エントリが重複しているということですが、私が編集フィールドを置く目的は、映画がいつ正確に編集されたか、つまりいくつかの他のフィールドが変更されたことを知ることです。
重複を避けるにはどうすればよいですか。実際の変更が起こった場合に備えて編集フィールドを保持しますか?
'Movie'モデルの' save() 'メソッドをオーバーライドしましたか? –
@CarlosMermingasいいえ私はしていないし、私はかなりそれを行う方法がわからない、私はかなりdjangoの新しいです – mari
私は参照してください。私は別の相互作用があったかどうか疑問に思いました。このエラーを再現するための小さなプロジェクトを作成しましたが、再現できませんでした。これは***あなたが実行しているコードです***をダブルチェックしてください。 'get_or_create'の' backdrop'と 'popularity'フィールドはMovieモデルには存在しません。 –