【问题标题】:Django: How to properly make shopping cart? ( Array string field )Django:如何正确制作购物车? (数组字符串字段)
【发布时间】:2017-02-18 02:01:36
【问题描述】:

最近我一直需要为我的网站创建一个可以在其中包含产品的服务器端购物车。我可以在会话 cookie 中添加购物车和产品,但我更喜欢将其添加到我的自定义用户模型中,这样当用户决定注销并重新登录时它可以保留。

由于我正在制作购物车,我需要为它制作一个模型,将产品作为对象保存,以便它们可以轻松使用,但我找不到任何正确的方法。

class User(models.Model):
    username = models.CharField(max_length=150)
    joined = models.DateTimeField('registered')
    avatar = models.CharField(max_length=300)
    balance = models.IntegerField(default=0)
    ban = models.BooleanField()
    cart = models.???


    def __str__(self):
        return self.username

如何使用 Django 系统实现模型中的数组字符串?如果不是,那么其他库(Json,Pickle)是否可以,但我已经看到它可以通过 ForeignKey 来完成,如果可以,怎么可能?

【问题讨论】:

标签: python django


【解决方案1】:

对于这个问题,我建议使用 DB 关系而不是存储字符串或字符串数​​组。

如果您使用数据库关系解决问题,则需要使用ManyToManyField

class User(models.Model):
    ...
    cart = models.ManyToManyField(Product)

假设您有产品模型。

class Product(models.Model):
    name = models.CharField(max_length=30)
    price = models.DecimalField(max_digits=8, decimal_places=2)

将元素添加到购物车时,您将使用类似的内容。

tv = Product(name='LED TV', ...)
tv.save()
diego = User.objects.get(username='dalleng')
diego.cart.add(some_product)

【讨论】:

  • 谢谢,我还需要在 shell 中放入什么?因为当我尝试Product 时会出现错误:NameError: name 'Product' is not defined
  • 我假设您已经创建了一个产品模型。使用 Django shell 时,需要导入所有模型。
  • 我很抱歉不理解,我需要在cart = models.ManyToManyField(Product) 中输入什么以便我可以替换产品?,它正好需要 2 个参数,如果我什么都不给它会给我那个 TypeError,如果不是它会给出 NameError。
  • 你必须把你想要与之建立关系的模型类放在一起。在您的情况下,您应该有一个 Product 模型。
  • 使用数据库关系和使用字符串数组是两个不同的东西。
猜你喜欢
  • 2013-03-06
  • 2020-08-05
  • 2021-12-18
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多