2017-06-12 8 views
0

私はモデル魔法使いにCommaSeparatedIntegerFieldを持っています。私はFiler FolderFieldから取得している画像の一部を保存しています。Django管理者の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 -indexing-when-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のコメントで示唆されているように、私は自分のアプショーを大幅に変更しました。 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) 
関連する問題