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