私はDjangoの新機能ですので、私の質問に対する答えを見つけようとするには、どの情報が最も関連性が高いのか理解しにくいです。URLにオブジェクトIDを渡すDjango Python
私はDjangoを学ぶチュートリアルに従いました。クラスはショッピングカートを作成します。ショッピングカートに商品を追加したり、商品を取り除いたりすることができないという問題があります。私には疑わしいと思われる主な事は、カートを見るとデータベースを選択するとドロップダウンしますが、本の名前の代わりにBook Object
と書かれています。私はこれが問題だと思っていますが、トラブルシューティングの方法がわかりません。
私はこの問題がバージョンの違いかもしれないと考え始めています。このチュートリアルでは、それ以降のバージョンを使用しています。私は
のpython 2.7.10 ジャンゴを使用しています1.9.4
私はこれがカートに追加し、ここで
url(r'^add/(\d+)', views.add_to_cart, name='add_to_cart'),
url(r'^remove/(\d+)', views.remove_from_cart, name='remove_from_cart'),
を削除するには、私のモデルと私の見解
URLに降りてくると仮定カートとブックオーダーのモデルです
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
class Author(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
def __unicode__(self):
return "%s, %s" % (self.last_name, self.first_name)
def cover_upload_path(instance,filename):
return '/'.join(['books',str(instance.id),filename])
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(Author)
description = models.TextField()
publish_date = models.DateField(default=timezone.now)
price = models.DecimalField(decimal_places=2, max_digits=8)
stock = models.IntegerField(default=0)
cover_image = models.ImageField(upload_to=cover_upload_path, default='books/empty_cover.jpg')
class Review(models.Model):
book = models.ForeignKey(Book)
user = models.ForeignKey(User)
publish_date = models.DateField(default=timezone.now)
text = models.TextField()
latitude= models.FloatField(max_length=20, default="37.41920")
longitude= models.FloatField(max_length=20, default="122.8574")
class Cart(models.Model):
user = models.ForeignKey(User)
active = models.BooleanField(default=True)
order_date = models.DateField(null=True)
payment_type = models.CharField(max_length=100, null=True)
payment_id = models.CharField(max_length=100, null=True)
def add_to_cart(self, book_id):
book = Book.objects.get(pk=book_id)
try:
preexisting_order = BookOrder.objects.get(book=book, cart=self)
preexisting_order.quantity += 1
preexisting_order.save()
except BookOrder.DoesNotExist:
new_order = BookOrder.objects.create(
book=book,
cart=self,
quantity=1
)
new_order.save()
def remove_from_cart(self, book_id):
book = Book.objects.get(pk=book_id)
try:
preexisting_order = BookOrder.objects.get(book=book, cart=self)
if preexisting_order.quantity > 1:
preexisting_order.quantity -= 1
preexisting_order.save()
else:
preexisting_order.delete()
except BookOrder.DoesNotExist:
pass
class BookOrder(models.Model):
book = models.ForeignKey(Book)
cart = models.ForeignKey(Cart)
quantity = models.IntegerField()
ここで私は■カートに追加したりカートから取り外すためのビュー。
私のモデルにはユニコードメソッドがありました。私は完全なモデルで質問を更新しました。 – wuno
'__unicode__'メソッドは' Author'モデルでのみ使用できます。すべてのモデルで定義する必要があります。 – v1k45
ああありがとうございます。私が持っているのと同じことは?毎回それを各方法にコピーしますか?より良い質問。私は何を得ているのですか?だから、私は本IDが必要です。私は必要self.book_id – wuno