我使用Django 1.8a1,並有我的模型是這樣 -和PostgreSQL的ArrayField在Django
from django.contrib.postgres.fields import ArrayField
from django.contrib.auth.models import User
# Create your models here.
class cart(models.Model):
user = models.ForeignKey(User, blank=True, null=True)
cart_details = ArrayField(models.CharField(max_length=200), null=True, blank=True)
def __str__(self): # __unicode__ on Python 2
return self.name.username
我有一個排在我postgres
分貝這樣
select * from cart_cart;
id | cart_details | user_id
----+---------------------------------+---------
1 | {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} | 1
我想刪除購物車中的一些商品詳情
我寫了下面的代碼
obj = cart.objects.filter(user=request.user, cart_details__contains=[product_id])
if obj.exists():
obj[0].cart_details = obj[0].cart_details.remove(str(product_id))
obj[0].save()
我也嘗試過這樣的事情,但是這也沒有工作
print obj[0].cart_details
[u'2', u'2', u'2', u'2', u'2', u'2', '2']
lis1=obj[0].cart_details
lis1.remove('2')
print lis1
[u'2', u'2', u'2', u'2', u'2', u'2',]
obj[0].cart_details = lis1
obj.save()
print obj[0].cart_details
[u'2', u'2', u'2', u'2', u'2', u'2', '2']
不知道我在做什麼錯。任何幫助將深表讚賞
沒能得到期望的結果。即使在保存之後,更改也不會反映在數據庫中..... – 2015-03-13 08:36:42
如何檢查更改是否在數據庫中?你記得提交你的數據庫事務嗎? – 2015-03-14 02:12:15
問題在於列cart_details ...在ArrayField以外的類型的任何其他列上,我可以使用obj.save()方法更新值...不需要對db進行手動提交。我認爲他們是ArrayField類型的列的一些問題。 Django orm無法處理這類字段(可能是因爲django 1.8仍在開發階段) – 2015-03-14 11:07:02