Yuv*_*dam 7 django django-models
假设您在Django模型中具有多对多关系,例如:
class GroceryList(models.Model):
items = models.ManyToManyField(GroceryItem, related_name='in_lists')
class GroceryItem(models.Model):
name = models.CharField(unique=True)
Run Code Online (Sandbox Code Playgroud)
你和我都可以在两个不同的列表中拥有相同的项目,例如Avocado,它们将指向同一个Avocado对象.
为每个列表中的项目实现任意顺序的最佳方法是什么,可以为每个列表单独编辑?(即我Avocado在我的列表中有第一个,而你在索引中有它4)
django-ordered-model看起来像一个有趣的解决方案,但它假定所有对象的全局顺序.
Roh*_*han 14
您可以使用中间表,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)
Run Code Online (Sandbox Code Playgroud)
所以,而不是做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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6325 次 |
| 最近记录: |