簡體   English   中英

在 Django 中實現“保存的書籍”購物車

[英]Implementing 'saved books' cart in Django

我想實現一個購物車頁面,我可以在其中保存我以前保存的所有書籍

模型.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

我認為我需要添加一個帶有字段的新模型購物車

保存= 模型。外鍵(書)

但它應該是一個書籍清單和如何實施它的idk :(

PS1如果你想保存一本書,你應該先注冊,這樣用戶才被授權。 跳過會話:)

PS2如果有沒有額外模塊的方法,我將非常感謝你:)

由於您不想使用其他模塊,您可以創建一個模型Cart其中userbooks作為外鍵。

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)

每當用戶訪問他的購物車時,只需從該模型中獲取數據並將其顯示給用戶即可。

Cart Table 看起來像這樣(來自Cart模型的上述定義):

+------+------+----------+
| User | Book | Quantity |
+------+------+----------+
|  1   |  51  |    1     |
|  2   |  95  |    1     |
|  1   |  65  |    1     |
+------+------+----------+

您可以看到id=1的用戶在他的購物車中存儲了兩本書( ids = 5165 ),而用戶(id=2)的購物車(book id=95 )中只有一本書。

在上述字段中添加您認為必要的任何字段 - 如價格等,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM