如果此RECORD不存在,请保存吗?

时间:2009-12-28 09:25:59

标签: django

Models.py

#.....
class FilterSave(models.Model):
   def __unicode__(self):
       return "%s" % (self.name)
   name = models.CharField(max_length=50)
   customer_type = models.CharField(max_length=20)
   tag = models.CharField(max_length=10)

在我的views.py

#......
def save_filter(self, filter_name, keyword_filter):
        dict_json = eval(json.dumps(keyword_filter))
        filter_saves = FilterSave.objects.all()
        # Avoid record that already exist
        filter_save = FilterSave(name=filter_name,  customer_type=dict_json["customer_type"], tag=dict_json["tag"])

       # I am trying ....
       for fs in filter_saves:
          if fs.name != filter_name:#just check for a field name
            filter_save.save()
          else:
            print 'already exist '

我尝试了更多

#避免名称冲突(仅针对名称字段而非记录)

filter_save = FilterSave(name=filter_name, customer_type=dict_json["customer_type"], tag=dict_json["tag"])
exists = FilterSave.objects.filter(name=filter_name)
if not exists:
    filter_save.save()

我的问题在这里。如果在桌子上不存在,我想保存一条记录。任何人可以帮助我,我在这里尝试的是什么? 感谢

1 个答案:

答案 0 :(得分:3)

Django有一个方便的方法get_or_create(defaults=None, **kwargs)

  

get_or_create

     

使用给定 kwargs 查找对象的便捷方法(如果您的模型具有所有字段的默认值,则可能为空),必要时创建一个。

     

返回(对象,已创建)的元组,其中对象是已检索或已创建的对象,并且创建的是一个布尔值,指定是否为新对象已创建。

这是你的意思吗?