假设 Django 模型中有多对多关系,例如:
class GroceryList(models.Model):
items = models.ManyToManyField(GroceryItem, related_name='in_lists')
class GroceryItem(models.Model):
name = models.CharField(unique=True)
你和我都可以在两个不同的列表中拥有相同的项目,例如Avocado
,并且它们将指向相同的Avocado
object.
实现任意的最好方法是什么order对于每个列表中的项目,可以为每个列表单独编辑吗? (即我有Avocado
在我的列表中第一个,而你在索引中有它4
)
django 有序模型看起来是一个有趣的解决方案,但它假设所有对象的全局顺序。
您可以使用中间表through并在该表中添加有序字段。
class GroceryList(models.Model):
items = models.ManyToManyField(GroceryItem, related_name='in_lists',
through='Order')
class GroceryItem(models.Model):
name = models.CharField(unique=True)
class Order(models.Model):
number = models.PositiveIntegerField()
gl = models.ForeignKey(GroceryList)
gi = models.ForeignKey(GroceryItem)
所以而不是做grocerylist.items.add(groceryitem)
你可以做
#for groceryitem1 as 1st item in grocerylist1
Order.objects.create(gl=grocerylist1, gi=groceryitem1, number=1)
#for groceryitem1 as 10th item in grocerylist2
Order.objects.create(gl=grocerylist2, gi=groceryitem1, number=10)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)