Django过滤产品在admin和添加组合中创建了新产品

时间:2016-04-28 17:28:18

标签: django django-models django-forms django-admin django-filter

我正在创建一个装备应用程序,我有三个型号产品,类别,装备。我的产品模型有字段(标题,Slug,价格,图像网址,颜色,图案)类别有字段(标题,描述和产品作为产品的外键)装备(标题,描述和产品有多对多)产品)

我的问题是在我将这些模型添加到管理员后我想从管理面板创建服装,这里是我被困住的地方。如何从管理面板向服装添加多个产品,我有一个大型数据库,因此从下拉菜单中选择不是我想要的选项是在所有字段的产品上过滤器,当我过滤显示产品想要选择时所有过滤后的产品,并将它们添加到装备中。

这里更清楚是一个例子 有一件酒红色条纹衬衫,海军蓝货,黑色皮带和棕色绒面革乐福鞋。现在在我的管理员创建服装时,我需要从我的产品模型添加所有这些产品,过滤衬衫(颜色:勃艮第和图案:条纹)然后货物(海军蓝色:颜色)带(皮革:材料)和乐福鞋with(材料:绒面革和颜色:棕色)正如你所看到的,不同的产品需要以不同的方式进行过滤,请告诉我如何实现这一目标以改变我的模型结构我希望以最佳方式实现这一点

2 个答案:

答案 0 :(得分:0)

你尝试过filter_horizo​​ntal吗? Admin

答案 1 :(得分:0)

你需要像这样自定义管理员

#models.py
class Outfit(models.Model):

    products = models.ManyToManyField(Product, blank=True)
    title = models.CharField(max_length=30)
    description = models.CharField(max_length=255)

#admin.py
from django.contrib.admin.widgets import FilteredSelectMultiple

class OutfitForm(forms.ModelForm):    
    products = forms.ModelMultipleChoiceField(
        required=False,
        queryset=Product.objects.all(),
        widget=FilteredSelectMultiple("Products", is_stacked=False),
        label='')


class OutfitFormAdmin(admin.ModelAdmin):
    form = OutfitForm
    list_display = ('title', 'description', 'products')
    fieldsets = (
        ('General', {
            'fields': (
                'title',
                'description'
            )
        }),
        ('Select products', {
            'fields': ('products',)
        }),
    )