0

我的 models.py 包含几个字段。默认情况下,主键由 Django 自动设置。

我有一个 Django crontab,它尝试定期更新每个条目,但无法再保存。(直到最近,我还是根据这些字段之一手动设置主键。)

有人可以建议如何解决这个问题。对于每个条目,我希望能够更新每个声明的字段并在不存在时创建。

我的印象是 save 会根据需要创建或更新

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 回答