【问题标题】:How to implement a ordered many2many relation in the Django admin如何在 Django admin 中实现有序的 many2many 关系
【发布时间】:2012-02-24 08:34:15
【问题描述】:

这是我拥有的示例模型:

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

【问题讨论】:

    标签: django django-models django-admin django-forms many-to-many


    【解决方案1】:

    你可以使用 Meta 类:

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

    【讨论】:

    • 这不符合我的要求,即用户可以操纵一个类别中的项目的顺序。
    • 抱歉,我没有正确阅读您的问题。你检查过这个snippet吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多