:Update_or_create alışkanlık saygı eşsiz anahtar
class sfs_upcs(models.Model):
upc = models.CharField(max_length=14, unique=True)
product_title = models.CharField(max_length=150,default="Not Available")
is_buyable = models.NullBooleanField()
price = models.DecimalField(max_digits=8, decimal_places=2,default="0.00")
image_url = models.URLField(default=None)
breadcrumb = models.TextField(default=None)
product_url = models.URLField(default=None)
timestamp = models.DateTimeField(auto_now=True)
Sonra benim views.py aşağıdaki kodu kullanıyorum: Ben
def insert_record(upc_dict):
upc = upc_dict['upc']
product_title = upc_dict['product_title']
is_buyable = upc_dict['is_buyable']
price = upc_dict['price']
image_url = upc_dict['image_url']
breadcrumb = upc_dict['breadcrumb']
product_url = upc_dict['product_url']
obj, created = sfs_upcs.objects.update_or_create(
defaults={'product_title':product_title,'is_buyable':is_buyable,
'price':price,'image_url':image_url,'breadcrumb':breadcrumb,'product_url':product_url
},
upc = upc,
product_title = product_title,
is_buyable = is_buyable,
price = price,
image_url = image_url,
breadcrumb = breadcrumb,
product_url = product_url)
print obj,created
belgelerinde https://docs.djangoproject.com/en/1.8/ref/models/querysets/#update-or-create yılında update_or_create yöntemi mevcut kullanarak ve 'varsayılanları' sözlüğüne nesne hile yapmalıdır bulunması durumunda gÜNCELLENECEK istediğiniz değerlerin geçirilmesi ... ama tarafından ben bir "IntegrityError almaya devam diyor ... sütun upc benzersiz değil "...
Herhangi bir fikrin var mı? filtre değerleri bir nesneyi seçmek için ve aslında güncellenmektedir güncelleme değerler:
kimlik parametresi verin. – Gocht
Ne demek istiyorsun? Birincil anahtar? Ama bu yalnız mı çalışmalı, rigt? – villancikos
'update_or_create' ile bir filtre ölçütüne ihtiyacınız varsa, güncelleme alanlarını ve ölçüt değerlerini verirsiniz. En iyi filtre kriterleri PK'dir. – Gocht