0

這裏的樣本模型我有一個有序的many2many關係:如何實現在Django管理

class Category(models.Model): 
    name = models.CharField(max_length=128) 


class Item(models.Model): 
    name = models,CharField(max_lenght=128) 
    category = models.ManyToManyField(Category, blank=True, 
             related_name='item_category', 
             null=True, through='ItemCategory') 


class ItemCategory(models.Model): 
    item = models.ForeignKey(Item) 
    category = models.ForeignKey(Category) 
    order = models.PositiveIntegerField(default=0, blank=True, null=True) 

我的問題是我如何安排在管理方面的秩序?換句話說,我需要擴展小部件功能以允許用戶更改所選項目的順序,並且在保存表單時,所選項目將在ItemCategory.order中保存項目順序。我有一個看起來像這樣的形式:

class CategoryForm(forms.ModelForm): 
    _items = forms.ModelMultipleChoiceField(
     required=True, 
     label='Items', 
     queryset=Items.objects.all(), 
     widget=FilteredSelectMultiple(verbose_name="Items", 
             is_stacked=False) 
     ) 

    def __init__(self, *args, **kwargs): 
     super(FamilyAdminForm, self).__init__(*args, **kwargs) 

    class Meta: 
     model = Items 

回答

0

您可以使用元類:

class Category(models.Model): 
    # ... 
    class Meta: 
     ordering = ['name'] 
+0

這不符合我的要求,用戶可以操縱在一個類別項目的順序。 – 2012-02-01 17:10:04

+0

對不起,我沒有正確地閱讀你的問題。你檢查過這個[snippet](http://djangosnippets.org/snippets/2306/)嗎? – 2012-02-02 06:59:37

+0

這看起來很不錯。謝謝 – 2012-02-02 14:36:46