Django:如何正确制作购物车? (数组字符串字段)

时间:2016-10-09 14:46:06

标签: python django

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

由于我正在制作购物车,我需要为它制作一个模型,将产品作为对象,因此它们可以很容易地使用,但我找不到任何正确的方法。< / p>

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完成,如果是这样的话怎么可能呢?

1 个答案:

答案 0 :(得分:2)

我建议使用数据库关系,而不是为此问题存储字符串或字符串数​​组。

如果使用数据库关系解决问题,则需要使用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)