オプションのフィールドが 2 つある単純な django モデルがあります。モデルを保存しようとするとエラーが発生します。
class Cart(models.Model):
shipping = models.ForeignKey(ShippingRate, blank=True, null=True)
date_created = models.DateTimeField(blank=True, null=True)
def save(self, *args, **kwargs):
if not self.date_created:
self.date_created = datetime.datetime.now()
super(Cart, self).save(*args, **kwargs)
シンプルなビューを使用してカート オブジェクトを保存すると、次のエラーが発生します -
'Cart' object has no attribute 'shipping_id'
super()
失敗したのは呼び出しです。私はデータベースを見て、フィールド'id'
とテーブル'date_created'
を持っています。'shipping_id'
私は自分のデータベースを南で管理しており、フィールドの削除、移行、および置換を試みましたが、うまくいきません。それは奇妙なものです - 明らかな何かが欠けていると思いますが、まだ見つけていません..
アップデート
オーバーライドを削除し、save()
フィールドを交換することも試みました(その後、南に移行しました)。shipping
フィールドを新しいフィールドに交換しましたshipping_rate
-
class Cart(models.Model):
shipping_rate = models.ForeignKey(ShippingRate, blank=True, null=True)
date_created = models.DateTimeField(blank=True, null=True)
今回は、保存時に同じエラーが発生しますが、それを引き起こしているのは date_created フィールドだけです。
'Cart' object has no attribute 'date_created'
前と同じように、(postgres) データベースを一瞥すると、予想される 3 つのフィールド ( 、 、および ) が表示id
さshipping_rate_id
れdate_created
ます。
更新 2
OK、コードを次のように減らしました -
#models
class Cart(models.Model):
shipping_rate = models.ForeignKey(ShippingRate, blank=True, null=True)
modified = models.DateTimeField(blank=True, null=True)
class Meta():
app_label = 'cart'
#views
def add_to_cart(request):
if 'cart' in request.session:
cart = request.session['cart']
else:
cart = Cart()
if not cart.pk:
cart.save()
return HttpResponse('ok')
そして私のトレースバック -
Traceback:
File "/Users/aidan/Environments/bbhq/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/Users/aidan/Code/bbhq/bbhq/cart/views.py" in add_to_cart
71. cart.save()
File "/Users/aidan/Environments/bbhq/lib/python2.7/site-packages/django/db/models/base.py" in save
463. self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/Users/aidan/Environments/bbhq/lib/python2.7/site-packages/django/db/models/base.py" in save_base
551. result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
File "/Users/aidan/Environments/bbhq/lib/python2.7/site-packages/django/db/models/manager.py" in _insert
203. return insert_query(self.model, objs, fields, **kwargs)
File "/Users/aidan/Environments/bbhq/lib/python2.7/site-packages/django/db/models/query.py" in insert_query
1575. query.insert_values(fields, objs, raw=raw)
File "/Users/aidan/Environments/bbhq/lib/python2.7/site-packages/django/db/models/sql/subqueries.py" in insert_values
170. value = getattr(obj, field.attname)
Exception Type: AttributeError at /cart/add_to_cart
Exception Value: 'Cart' object has no attribute 'shipping_rate_id'