具有用户定义属性的Django购物车

具有用户定义属性的Django购物车,django,django-models,django-forms,Django,Django Models,Django Forms,你好 我正在构建一个应用程序,用于订购印刷品,并在一个 用户除了从预定义值中进行选择外,还可以输入自己的数据进行打印 考虑以下几点: class PrintItem(models.Model): """ Something printable. Poster, t-shirt, mug, etc """ name = models.CharField(max_length=20) class AttributeType(models.Model): """ Size,c

你好

我正在构建一个应用程序,用于订购印刷品,并在一个 用户除了从预定义值中进行选择外,还可以输入自己的数据进行打印

考虑以下几点:

class PrintItem(models.Model):
    """ Something printable. Poster, t-shirt, mug, etc """
    name = models.CharField(max_length=20)

class AttributeType(models.Model):
    """ Size,colour, etc """
    name = models.CharField(max_length=20)

class Attribute(models.Model):
    """ Size: A4, A5 | Colour: Violet, Black """
    name = models.CharField(max_length=20)
    type = models.ForeignKey(AttributeType)

# And a join model
class PrintAttribute(models.Model):
    print_item = models.ForeignKey(PrintItem)
    attributes = models.ManyToManyField(Attribute)

# The user adds these to a cart
class Cart(models.Model):
    user = models.ForeignKey(User)

class CartItem(models.Model):
    cart = models.ForeignKey(Cart)
    print_item = models.ForeignKey(PrintItem)
这一切都很好。用户可以从预定义属性中进行选择,但是您建议我如何以及在何处实现用户输入功能? 用户找到要打印的项目,从预定义属性(打印大小、墨水颜色)中进行选择,并可以输入自己的消息/标语在项目上打印


感谢您的建议。

如果只有在向购物车添加打印项目时才输入用户自己的标语/消息,则如果只有在向购物车添加打印项目时才输入用户自己的标语/消息,则标语/消息应为
购物车项目的字段,然后标语/消息应该是一个
CartItem

字段,我建议您首先重新考虑您的模型结构。我觉得很困惑。三种模型应该足够了:
PrintItem(名称、属性[m2m])
属性(名称、类型)
CartItem(用户[foreign],打印项目[foreign])
。可能是,我忽略了一些东西,但您应该能够更轻松地表达与这三个模型的相同关系。
AttributeType
允许在开发过程中创建未知类型。管理员可能希望添加和删除类型。也许可以将
购物车
购物车项目
合并。然而,我的主要问题是在哪里存储用户输入的属性数据。更新问题以澄清这一点。我建议您首先重新考虑您的模型结构。我觉得很困惑。三种模型应该足够了:
PrintItem(名称、属性[m2m])
属性(名称、类型)
CartItem(用户[foreign],打印项目[foreign])
。可能是,我忽略了一些东西,但您应该能够更轻松地表达与这三个模型的相同关系。
AttributeType
允许在开发过程中创建未知类型。管理员可能希望添加和删除类型。也许可以将
购物车
购物车项目
合并。然而,我的主要问题是在哪里存储用户输入的属性数据。更新问题以澄清这一点。我相信你是对的。这是我的想法,我认为这是正确的答案,因为这是我想要的方法。非常感谢你把我引向正确的方向。我相信你是对的。这是我的想法,我认为这是正确的答案,因为这是我想要的方法。非常感谢你给我指引了正确的方向。