0

新しい値をsave()する方法は?

エラー: AttributeError:'int'オブジェクトに属性'save'がありません

私はこのコードを持っています:

class Magazin(models.Model):
    owner = models.ForeignKey(User, related_name='user_magazin', verbose_name='Owner')
    name = models.CharField("Magazin_Name", max_length=30)
    products = models.ManyToManyField('Product', through='MagazinProduct', blank=True, null=True)

class MagazinProduct(models.Model):
    product = models.ForeignKey('Product')
    magazin = models.ForeignKey('Magazin')
    quantity = models.IntegerField()

私はこのようなことを試みます:

from magazin.product.models import *

In [2]: user = 2 #user id

In [3]: quantity = 4

In [4]: magazin = Magazin.objects.get(owner=user)

In [6]: mp = MagazinProduct.objects.get(magazin=magazin, product=1) #product=1 this is ID

In [8]: mp.quantity
Out[8]: 1

In  [9]: mp.quantity = quantity
In [10]: mp.quantity
Out[10]: 4

In [11]: mp.quantity.save()
---------------------------------------------------------------------------

AttributeError: 'int' object has no attribute 'save'
4

2 に答える 2

1

次のように変更する必要があります。

mp.save() 

代わりは。


mpMagzinProductクラスのインスタンスであり、メソッドを持たないmp.quantity単なるものです。インスタンスを更新するには、このインスタンスを呼び出します。この場合は、単にです。intsavesave()mp.save()

于 2012-10-11T10:06:50.403 に答える
1

属性を保存するのではなく、インスタンスを保存します。あなたの例では、そのオブジェクトのすべての属性を保存するmpようなインスタンスでsaveメソッドを呼び出します。mp.save()参考のために公式ドキュメントを参照してください。

于 2012-10-11T10:08:25.137 に答える