代码之家  ›  专栏  ›  技术社区  ›  tree em

如果此记录不存在,是否保存?

  •  2
  • tree em  · 技术社区  · 15 年前

    型号.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)
    

    在我的视野里

    #......
    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 回复  |  直到 10 年前
        1
  •  3
  •   Grijesh Chauhan Anand Krishnan    10 年前

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

    get_or_create

    一种方便的查找给定对象的方法 关键字参数 (如果模型具有所有字段的默认值,则可能为空),如有必要,请创建一个字段。

    返回的元组 (对象,已创建) 在哪里 对象 是被取回的还是 创建 对象和已创建是一个布尔值,用于指定是否创建了新对象。

    这就是你的意思吗?