假设您在Django模型中具有多对多关系,例如:
class GroceryList(models.Model):
items = models.ManyToManyField(GroceryItem, related_name='in_lists')
class GroceryItem(models.Model):
name = models.CharField(unique=True)
您和我在两个不同的列表中都可以有相同的项目,例如Avocado
,它们将指向相同的Avocado
对象。
对每个列表中的项目实施任意顺序的最佳方法是什么,可以对每个列表分别进行编辑?(即,我Avocado
在列表中排名第一,而您在索引中4
)
django-ordered-model似乎是一个有趣的解决方案,但它假定所有对象之间的全局顺序。
您可以使用中间表,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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句