在 Django 中实现 'saved books' 购物车
Implementing 'saved books' cart in Django
我想实现一个购物车页面,我可以在其中保存我之前保存的所有书籍
models.py
class Book(models.Model):
LANGUAGES = (
('ukr', 'Ukrainian'),
('eng', 'English'),
('rus', 'Russian'),
)
image = models.ImageField(upload_to='images/', default='4.jpg')
title = models.CharField(max_length=128)
description = models.CharField(max_length=512)
language = models.CharField(choices=LANGUAGES, default='English', max_length=100)
# many books has one genre, if genre is deleted then delete related books
genre = models.ForeignKey('Genre', on_delete=CASCADE)
price = models.DecimalField(validators=[isBiggerThanZero], max_digits=6, decimal_places=2)
slug = AutoSlugField(populate_from='title', default='')
def __str__(self):
return self.title
class Genre(models.Model):
genre = models.CharField(max_length=32, default='')
def __str__(self):
return self.genre
我认为我需要添加一个新模型 购物车 带有一个字段
已保存 = models.ForeignKey(书籍)
但它应该是一个书籍列表,我知道如何实现它:(
P.S.1如果你想保存一本书,你应该注册,这样用户才有权限。跳过会话:)
P.S.2 如果有办法不用额外的模块就可以做到这一点,我将非常感谢你:)
由于您不想使用额外的模块,您可以使用 user
和 books
作为外键创建一个模型 Cart
。
class Cart(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
book = models.ForeignKey(Book, on_delete=models.CASCADE)
# Quantity of a book that is saved in the cart. Default will be 1
quantity = models.IntegerField(default=1)
每当用户访问他的购物车时,只需从该模型中获取数据并将其显示给用户。
购物车 Table 看起来像这样(来自 Cart
模型的上述定义):
+------+------+----------+
| User | Book | Quantity |
+------+------+----------+
| 1 | 51 | 1 |
| 2 | 95 | 1 |
| 1 | 65 | 1 |
+------+------+----------+
您可以看到 id=1
的用户在他的购物车中存储了两本书(ids = 51
和 65
),而用户 (id=2)
中只有一本书他的购物车(书 id=95
)。
在上述字段中添加您可能认为必要的任何字段 - 例如价格等,
我想实现一个购物车页面,我可以在其中保存我之前保存的所有书籍
models.py
class Book(models.Model):
LANGUAGES = (
('ukr', 'Ukrainian'),
('eng', 'English'),
('rus', 'Russian'),
)
image = models.ImageField(upload_to='images/', default='4.jpg')
title = models.CharField(max_length=128)
description = models.CharField(max_length=512)
language = models.CharField(choices=LANGUAGES, default='English', max_length=100)
# many books has one genre, if genre is deleted then delete related books
genre = models.ForeignKey('Genre', on_delete=CASCADE)
price = models.DecimalField(validators=[isBiggerThanZero], max_digits=6, decimal_places=2)
slug = AutoSlugField(populate_from='title', default='')
def __str__(self):
return self.title
class Genre(models.Model):
genre = models.CharField(max_length=32, default='')
def __str__(self):
return self.genre
我认为我需要添加一个新模型 购物车 带有一个字段
已保存 = models.ForeignKey(书籍)
但它应该是一个书籍列表,我知道如何实现它:(
P.S.1如果你想保存一本书,你应该注册,这样用户才有权限。跳过会话:)
P.S.2 如果有办法不用额外的模块就可以做到这一点,我将非常感谢你:)
由于您不想使用额外的模块,您可以使用 user
和 books
作为外键创建一个模型 Cart
。
class Cart(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
book = models.ForeignKey(Book, on_delete=models.CASCADE)
# Quantity of a book that is saved in the cart. Default will be 1
quantity = models.IntegerField(default=1)
每当用户访问他的购物车时,只需从该模型中获取数据并将其显示给用户。
购物车 Table 看起来像这样(来自 Cart
模型的上述定义):
+------+------+----------+
| User | Book | Quantity |
+------+------+----------+
| 1 | 51 | 1 |
| 2 | 95 | 1 |
| 1 | 65 | 1 |
+------+------+----------+
您可以看到 id=1
的用户在他的购物车中存储了两本书(ids = 51
和 65
),而用户 (id=2)
中只有一本书他的购物车(书 id=95
)。
在上述字段中添加您可能认为必要的任何字段 - 例如价格等,