Django多对多表单字段+额外的“通过”字段

2024-10-06 11:30:08 发布

您现在位置:Python中文网/ 问答频道 /正文

几天来我一直在寻找解决问题的办法,但似乎找不到我想要的东西。我想用购物车的形式来订一些商品的单子。你要检查你需要的产品,并填写每一个的金额。之后可以编辑预订。在

我的问题是,预订和产品通过多对多的中介模型联系起来,从而有一个额外的“数量”字段:

class Reservation(models.Model):
    # some fields...
    products = models.ManyToManyField(Product, through='ProductReservation')

class Product(models.Model):
    # some fields...

class ProductReservation(models.Model):
    quantity = models.IntegerField()
    reservation = models.ForeignKey(Reservation)
    product = models.ForeignKey(Product)

我已经看到一些帖子处理类似的问题在管理,但在这里我需要使它对客户可用。我曾考虑过使用一个带有自定义查询集的内联表单集,但是我无法在不同的类之间建立链接。我总是可以直接从提交的数据填充我的字段,但我需要在多个视图中重用该表单,无论如何,这听起来并不枯燥。在

谢谢你的帮助!在


Tags: 表单fieldsmodel产品modelssomeproduct形式
1条回答
网友
1楼 · 发布于 2024-10-06 11:30:08

所以首先你要创建一个预订 reservation = Reservation.objects.create(some_field=some_value)

然后你创造了一个产品 product = Product.objects.create(some_field=some_value)

最后,您可以使用ProductReservation创建两者之间的链接 ProductReservation.create(quantity=100, reservation=reservation, product=product)

您的表单可以建立在ProductReservation模型的基础上。 这里提到如何:Accessing Many to Many "through" relation fields in Formsets 如果事情变得更复杂,可以考虑构建一个没有内联表单“快捷方式”的自定义表单。在

相关问题 更多 >