Dav*_*ard 6 python django drag-and-drop django-admin python-3.x
寻求一些指导,因为就我的 Django 经验而言,我正在进入新领域。我正在编写一个复印请求应用程序,因此创建了几个模型:
class Job(models.Model):
id = models.AutoField(primary_key=True) # AutoField?
class Resource(models.Model):
id = models.AutoField(primary_key=True) # AutoField?
job = models.ForeignKey(Job)
file = models.FileField(upload_to="repro/")
Run Code Online (Sandbox Code Playgroud)
管理视图包含内联资源
class ResourceInline(admin.TabularInline):
model = Resource
extra = 0
class JobAdmin(admin.ModelAdmin):
model = Job
list_display = ['requestedby','account','requestdate','requireddate','noofsides','noofcopies']
list_filter = ['requireddate']
search_fields = ['requestedby','account']
form = JobForm
fieldsets = [
(None, {'fields': ['requestedby','account','requestdate','requireddate','noofsides','noofcopies'] }),
('Requirements', {'fields': ['color','sided','paper','finishing']}),
('Additional Information', {'fields': ['additionalinfo']}),
]
inlines = [ResourceInline]
admin.site.register(Job,JobAdmin)
Run Code Online (Sandbox Code Playgroud)
我计划使用dropzone.js并为自己准备了一个可以自定义的change_form.html,但此时我有点迷失了。如何用我的拖放区替换内联并使其正常工作?
感谢您的任何帮助或指点。
克里斯
小智 5
使用adminsortable2在 Django Admin 中进行拖放。这是github 链接。
因此,在您的情况下, adminsortable2的代码如下。
“模型.py”:
from django.db import models
class Job(models.Model):
id = models.AutoField(primary_key=True)
my_order = models.PositiveIntegerField(default=0, blank=False, null=False)
class Meta:
ordering = ['my_order']
class Resource(models.Model):
id = models.AutoField(primary_key=True)
job = models.ForeignKey(Job)
file = models.FileField(upload_to="repro/")
my_order = models.PositiveIntegerField(default=0, blank=False, null=False)
class Meta:
ordering = ['my_order']
Run Code Online (Sandbox Code Playgroud)
“admin.js”:
from django.contrib import admin
from adminsortable2.admin import SortableAdminMixin, SortableInlineAdminMixin
from .models import Job, Resource
class ResourceInline(SortableInlineAdminMixin, admin.TabularInline):
model = Resource
extra = 0
@admin.register(Job)
class JobAdmin(SortableAdminMixin, admin.ModelAdmin):
list_display = ['requestedby','account','requestdate','requireddate','noofsides','noofcopies']
list_filter = ['requireddate']
search_fields = ['requestedby','account']
form = JobForm
fieldsets = [
(None, {'fields': ['requestedby','account','requestdate','requireddate','noofsides','noofcopies'] }),
('Requirements', {'fields': ['color','sided','paper','finishing']}),
('Additional Information', {'fields': ['additionalinfo']}),
]
inlines = [ResourceInline]
Run Code Online (Sandbox Code Playgroud)
然后,在编写上面的代码后运行下面的命令来保存排序:
python manage.py reorder <app.model>
Run Code Online (Sandbox Code Playgroud)
因此,就您而言,我不知道您的应用程序名称,因此如果您的应用程序名称是“work”并且我知道您的模型名称“Job”和“Resource”,那么请运行下面的命令来保存您的排序:
python manage.py reorder work.Job work.Resource
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4352 次 |
| 最近记录: |