【问题标题】:Formatting Django ManyToManyField as selectable items将 Django ManyToManyField 格式化为可选项目
【发布时间】:2018-04-20 20:51:46
【问题描述】:

我有 2 个问题。我有 2 个模型 Toolcart 和 Tools 我正在建立从 Toolcart 到 Tools 的 ManyToMany 关系,我想将一个或多个工具添加到购物车

问题 1.- 这是我尝试做的正确方法吗?
问题 2.- 我使用了一个通用类来创建 Toolcart 对象 (CreateView) 并从 Tools 模型中获取一个包含所有内容的框。我将如何制作可选项目。我正在尝试做的事情有意义吗?

我的模型.py:

class Tools(models.Model):
    nombre = models.CharField(max_length=250)
    descripcion = models.CharField(max_length=250)
    codigo_proveedor = models.CharField(max_length=250)
    categoria = models.ForeignKey('Categorias', on_delete=models.CASCADE)
    c_minima = models.IntegerField()
    c_actual = models.IntegerField()
    proveedor = models.ForeignKey('Proveedores', on_delete=models.CASCADE)
    active = models.BooleanField()


    def __str__(self):
        return self.nombre + '   -----   ' + str(self.categoria) + '   -----    ' + str(self.c_actual)


class Toolcart(models.Model):
    designacion = models.CharField(max_length=250)
    contenido = models.ManyToManyField(Tools)
    active = models.BooleanField()

    def  __str__(self):
        return self.designacion

我的意见.py:

# VER CARRITO
class CarritoCreateView(CreateView):
    model = Toolcart
    template_name = 'inventory/cars_form.html'
    fields = [
        'designacion',
        'contenido',
        'active',
    ]
success_url = reverse_lazy('inventory:home')

【问题讨论】:

  • 您的问题解决了吗?我下面的回答对你有用吗?
  • 您好,感谢您的跟进。老实说,还没有时间实施它。一旦有机会,我会尝试一下,并告诉您何时使用。

标签: django django-models django-forms django-templates django-views


【解决方案1】:

关于问题 1

是的,我认为这两个模型和ManyToManyRelationship 是应对您描述的任务的好方法。

关于问题 2

你可以采取两种方式:

  1. 显示Tools 列表,其中每个工具项都有一个“添加到购物车”按钮,用于提交隐藏表单(每一行都有自己的隐藏表单)。

    <form method='post' action='/url/to/add/to/cart/'>
        {% csrf_token %}
        <input type='hidden' value='{{ tool.pk }}' name='tool_pk'>
        <button>add to cart</button>
    </form>
    
  2. 在一个巨大的表单中显示Tools的列表,并让每个工具项都有一个复选框。然后,您可以通过一个按钮“将所选商品添加到购物车”提交整个表单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 2012-04-29
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 2018-01-07
    相关资源
    最近更新 更多