让我们说你有一个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异常,我知道它不存在,所以我创建了一个新的。这是更新或将新对象保存到数据库中的正确/最佳/惯用方法吗?我知道它有效,但它看起来有点不对劲。不雅。
答案 0 :(得分:1)
不,django有built-in方法可以做到这一点。
entry, created = ActiveDirectory.objects.get_or_create(
object_guid = 'your_value',
name = = 'your_value',
mail = 'your_value'
)