有没有办法如何多次在m2m字段中存储同一个对象?
我们说我有以下型号
class Item(models.Model):
name = models.CharField(max_length=64)
class Inventory(models.Model):
items = models.ManyToManyField('Items', blank=True)
我创建了一些实例
>>> inventory = Inventory()
>>> inventory.save()
>>> item1 = Item(name='Item 1')
>>> item1.save()
>>> item2 = Item(name='Item 2')
>>> item2.save()
现在我想多次将这些项目实例添加到广告资源中。
>>> inventory.items.add(item1)
>>> inventory.items.add(item2)
>>> inventory.items.all()
[<Item: Item 1>, <Item: Item 2>]
>>> inventory.items.add(item1)
>>> inventory.items.all()
[<Item: Item 1>, <Item: Item 2>]
So ManyToManyField就像一个集合,有没有办法实现multiset的行为?
答案 0 :(得分:1)
您可以存储Item
的
InventoryItem
存储在您的广告资源中
class InventoryItem(models.Model):
item = models.ForeignKey(Items)
quantity = models.SmallIntegerField(default=1)
inventory = models.ForeignKey(Inventory)
我们的想法是介绍一个为您处理数量的中产阶级,以及可能的其他事项,例如该项目是否可以叠加。
我能想到的唯一选择是复制一个项目对象,然后将这两个项目存储在清单中 - 这可能会或可能不会更好地用于您的用例