2017-06-12 196 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)