0

私のmodels.pyにはいくつかのフィールドが含まれています。主キーはデフォルトで、Djangoによって自動的に設定されます。

各エントリを定期的に更新しようとするDjangocrontabがありますが、保存できなくなりました。(最近まで、これらのフィールドの1つに基づいて主キーを手動で設定していました。)

誰かがこれを回避する方法を提案できますか?エントリごとに、宣言された各フィールドを更新し、存在しない場合は作成できるようにしたいと思います。

保存は必要に応じて作成または更新の両方を行うという印象を受けました

class ABC(models.Model):
    init = models.CharField(max_length=6)
    last = models.CharField(max_length=20)
    fullid = models.CharField(max_length=30) <--- used to be primary_key=True

Crontab (pseudocode)
    for x in list:
        try: 
           entry = init='abc', last='def', fullid='xyz'
           entry.save()

        except: 'unable to update.' <-- I'm now hitting the except all the time.
4

1 に答える 1

2

そのようなものを使用してください:

try: 
    abc = ABC.objects.get(fullid=id) 
except ABC.DoesNotExist: 
    ABC.objects.create(params)
else:
    abc.field = value
    abc.save()

try: ... except: ...この方法では、内部で何が失敗したかさえわからないため、決して使用しないでください。処理方法を知っている「待機中」の例外のみをキャッチします。または、防弾で止められないようにしたい場合は、少なくともキャッチされた例外情報を表示してください。

于 2012-05-22T05:36:31.013 に答える