假设您有一个 ActiveDirectoryUser 模型:
class ActiveDirectoryUser(models.Model):
object_guid = models.CharField(max_length=200, unique=True)
mail = models.EmailField(unique=True)
name = models.CharField(max_length=200)
此模型由 Active Directory 查询填充。每天,我都会重新运行一个查询 Active Directory 的作业,获取结果,并检查此人是否已经在 AD 中。如果是,则检查是否有任何更改,如果没有,则将它们添加到数据库中。我发现自己在写:
try:
ad_user = ActiveDirectoryUser.objects.get(object_guid=object_guid)
ad_user.object_guid = object_guid
ad_user.mail = mail
ad_user.name = name
ad_user.save()
except ActiveDirectoryUser.DoesNotExist:
ActiveDirectoryUser(
object_guid=object_guid,
mail=mail,
name=name).save()
基本上,我尝试获取具有属性的对象,如果这引发了 DoesNotExist 异常,我知道它还不存在,所以我创建了一个新的。这是将新对象更新或保存到数据库中的正确/最佳/惯用方式吗?我知道它有效,但不知何故它看起来不对。不雅。