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()
我的问题在这里。如果在桌子上不存在,我想保存一条记录。任何人可以帮助我,我在这里尝试的是什么? 感谢
答案 0 :(得分:3)
Django有一个方便的方法get_or_create(defaults=None, **kwargs)
get_or_create
使用给定 kwargs 查找对象的便捷方法(如果您的模型具有所有字段的默认值,则可能为空),必要时创建一个。
返回(对象,已创建)的元组,其中对象是已检索或已创建的对象,并且创建的是一个布尔值,指定是否为新对象已创建。
这是你的意思吗?