2017-06-12 194 views
0

我正在模型女巫有一个CommaSeparatedIntegerField在我存储的一些图像女巫我从文件管理器FolderField得到的顺序。在Django Admin排序CommaSeparatedIntegerField

class Gallery(models.Model) 
    […] 
    folder = FilerFolderField(blank=False) 
    order = models.CommaSeparatedIntegerField(max_length=300, blank=True) 

现在我正在寻找一种方法,以便能够(例如,通过拖放)在Django管理

P.S.轻易改变这个顺序我知道FilerFolderField尚未记录,可以被删除,并且CommaSeparatedIntegerField也被弃用。

+0

不要保存CSV在列http://stackoverflow.com/questions/41304945/best-type-of -ind-as-like-like-clause/41305027#41305027 http://stackoverflow.com/questions/41215624/sql-table-with-list-entry-vs-sql-table-with-a-row- for-each-entry/41215681#41215681 – e4c5

+0

另外请注意,这个字段是(谢天谢地)在django 1.9 – e4c5

+0

弃用所以,根据这个给定的情况,你建议哪种做法? –

回答

0

正如e4c5的评论中所建议的那样,我大规模地改变了我的app。 我现在有一个带有FilerFolderField(仍未记录)的模型,filer.models.Image的sortedm2m带有选定文件夹中所有文件的自定义查询集。

models.py:

class Car(models.Model): 
    … 
    folder = filer.fields.folder.FilerFolderField(blank=False) 
    images = SortedManyToManyField(filer.models.Image) 
    … 

admin.py:

class CarAdminForm(ModelForm): 
class Meta: 
    model = Car 
    fields = '__all__' 

def __init__(self, *args, **kwargs): 
    super(CarAdminForm, self).__init__(*args, **kwargs) 
    choices = [] 
    for i in self.instance.folder.files.all(): 
     i.__str__ = thumb_string 
     choices.append(i) 
    self.fields['images'].queryset = self.instance.folder.files.all() 


class CarAdmin(admin.ModelAdmin): 
    list_display = ['name'] 
    list_filter = ['created'] 

    def __init__(self, model, admin_site): 
     super(CarAdmin, self).__init__(model, admin_site) 
     self.orig_form = self.form 

    def change_view(self, request, object_id, form_url='',  extra_context=None): 
     self.form = CarAdminForm 
     self.prepopulated_fields = {} 
     self.exclude = [] 
     return super(CarAdmin, self).change_view(request, object_id) 

    def add_view(self, request, form_url='', extra_context=None): 
     self.form = self.orig_form 
     self.prepopulated_fields = {"slug": ("name",)} 
     self.exclude = ('images',) 
     return super(CarAdmin, self).add_view(request) 


class CategoryAdmin(admin.ModelAdmin): 
    list_display = ['title', 'description'] 




admin.site.register(Car, CarAdmin) 
admin.site.register(Category, CategoryAdmin)