回答
要進行此操作的工作代碼,請查看snippet 1053,網址djangosnippets.org。
在模型類中,您可能需要添加「訂單」字段以維護特定的訂單(例如,訂單= 10的商品是最後一個,訂單= 1是第一個)。然後您可以在admin change_list模板中添加一個JS代碼(請參閱this)以保持拖動&拖放功能。最後,將模型的Meta中的排序更改爲['order']之類的內容。
請注意「如果我不需要爲模型添加任何額外的字段,但如果我真的必須我可以,最好。」
對不起,數據庫中信息的順序是由信息本身決定的:您總是需要添加一個列來進行排序。這真的沒有選擇。
此外,要按照此順序檢索內容,您需要在您的查詢中專門添加.order_by(x)
或將ordering
添加到您的模型中。
class InOrder(models.Model):
position = models.IntegerField()
data = models.TextField()
class Meta:
ordering = [ 'position' ]
沒有額外的字段排序不能發生。這是關係數據庫的規則之一。
謝謝,與作者相反,我正在尋找添加的行! – 2015-12-08 10:44:47
不幸的是,django-suit的實現不是拖放式的。 – Nexus 2016-10-10 21:56:30
內置支持你可以試試這個片段https://gist.github.com/barseghyanartur/1ebf927512b18dc2e5be(最初基於這個片段http://djangosnippets.org/snippets/2160/)。
集成非常簡單。
你的模型(models.py):
class MyModel(models.Model):
name = models.CharField(max_length=255)
order = models.IntegerField()
# Other fields...
class Meta:
ordering = ('order',)
您聯繫(admin.py):
class MyModelAdmin(admin.ModelAdmin):
fields = ('name', 'order',) # Add other fields here
list_display = ('name', 'order',)
list_editable = ('order',)
class Media:
js = (
'//code.jquery.com/jquery-1.4.2.js',
'//code.jquery.com/ui/1.8.6/jquery-ui.js',
'path/to/sortable_list.js',
)
更改JS(代碼片段)因此,如果負責牽着你的屬性名稱和順序在您的模型中以不同的名稱命名。
只有在模型中添加字段時才能確定訂單。讓我們在模型中添加一個位置字段。
In your models.py
class MainModel(models.Model):
name = models.CharField(max_length=255)
position = models.PositiveSmallIntegerField(null=True)
class Meta:
ordering = ('position',)
In your apps admin.py
class IdeaCardTagInline(nested_admin.NestedStackedInline):
model = MainModel
extra = 0
min_num = 1
sortable_field_name = "position"
在元ordering = ('position',)
將根據在位置字段中的值訂購MainModel。當用戶拖放多個模型時, sortable_field_name = "position"
將幫助自動填充位置值。
要在您的api中查看相同的順序,請在views_model.py中使用order_by(x)。 只是一個模型例如:
Model.objects.filter().order_by('position').
- 1. 使用MVVM拖放重新排序ItemsControl
- 2. 拖放重新排序
- 3. 的Qt:重新排序的ListView項目使用拖放
- 4. 將模型拖放後重新排序集合
- 5. 在QTreeWidget中用PyQt拖放來重新排序項目
- 6. 重新排序StackPanel的兒童拖放
- 7. jQuery的拖放掇重新排序
- 8. 與拖放和簡單的GridView拖放重新排序
- 9. jquery拖放和重新排序
- 10. jquery表列拖放與重新排序
- 11. jqGrid拖放列重新排序
- 12. jQuery - 拖放列表重新排序
- 13. TreeViewer:使用拖放來重新排序或重新樹中的元素
- 14. QTreeWidget拖放重新排序選擇錯誤的項目
- 15. 如何重新排序QML Row的子項(使用拖放)?
- 16. 拖放排序NG-重複
- 17. 重新排序ListView項目:事件和拖放
- 18. ListView拖放重新排序項目 - 最佳實踐
- 19. 使用ajax拖放功能重新排序列字段? PHP/jQuery
- 20. 使用拖放重新排序winforms列表框?
- 21. 使用拖放對JList進行重新排序
- 22. 使用拖放對HTML表格行重新排序
- 23. 表拖放重新排序和列排序
- 24. 使用拖放重新排列堆疊面板中的圖像
- 25. 拖放重新排序 - 一次重新排列2個並排元素
- 26. ListView UWP拖動重新排序不會觸發拖放事件
- 27. ag-grid:使用拖放對網格中的行進行重新排序
- 28. 如何使用拖放Primefaces對數據表中的列進行重新排序
- 29. 使用jQuery拖放表列的排序
- 30. 重新排序gnuplot鍵條目
什麼是最好的解決方案現在,Django的1.2 2011/1.3? – monkut 2011-04-13 08:14:51