Я использую Джанго 1.8a1 и есть моя модель, как это -Удалить элемент из ArrayField из PostgreSQL в 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
I хотел бы удалить некоторые элементы в корзину Подробное описание
Я написал следующий код
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']
Не знаю, что я делаю неправильно. Любая помощь будет глубоко оценена
Не удалось получить желаемый результат. Даже после сохранения изменения не отражаются в базе данных ..... –
Как вы проверяете, находятся ли изменения в базе данных или нет? Помните, что вы совершаете транзакцию с базой данных? –
Проблема заключается в столбце cart_details ... В любом другом столбце с типом, отличным от ArrayField, я смог обновить значение с помощью метода obj.save() ... Нет необходимости выполнять ручную фиксацию на db. Я думаю, что их проблема связана с столбцами типа ArrayField. Django orm не может обрабатывать такое поле (возможно, потому, что django 1.8 все еще находится в стадии разработки) –