如何将 ModelMultipleChoiceField 添加到模型?

问题描述 投票:0回答:1

如何在 ModelMultipleChoiceField 中显示我的模型 我有模型.py

# Модель заказа
class ProductsSet(models.Model):
    # Название набора
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, help_text="ID")
    name = models.CharField(max_length=200)
    products_set = models.ManyToManyField('ProductsInstance', related_name='sets') 
    borrower = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
    created_date = models.DateField(null=True, blank=True)

class ProductsInstance(models.Model): 
    id = models.UUIDField(primary_key=True, default=uuid.uuid4,
                          help_text="Unique ID")
    product = models.ForeignKey('Products', on_delete=models.RESTRICT, null=True)

И admin.py

@admin.register(ProductsInstance)
class ProductsInstanceAdmin(admin.ModelAdmin):
    list_display = ('product', 'price_for_client', 'borrower', 'coeff')
    list_filter = ('status','borrower',)

    fieldsets = (
        (None, {
            'fields': ('product', 'coeff', 'price_for_client', 'id')
        }),
        ('Availability', {
            'fields': ('status', 'borrower')
        }),
    )
    
@admin.register(ProductsSet)
class ProductsSetAdmin(admin.ModelAdmin):
    list_display = ('name', 'borrower', 'created_date', 'status', 'total_amount')
    fields = ['id', 'name', 'products_set', 'created_date', 'borrower', 'status', 'total_amount']
    list_filter = ['borrower','created_date','status']   

现在对我来说是什么样子 enter image description here

这就是我想要的: enter image description here

python django admin
1个回答
0
投票

您在

filter_horizontal
属性中列出关系[Django-doc]:

@admin.register(ProductsSet)
class ProductsSetAdmin(admin.ModelAdmin):
    list_display = ('name', 'borrower', 'created_date', 'status', 'total_amount')
    fields = [
        'id',
        'name',
        'products_set',
        'created_date',
        'borrower',
        'status',
        'total_amount',
    ]
    filter_horizontal = ['products_set']
    list_filter = ['borrower', 'created_date', 'status']

您还可以使用

filter_vertical
属性[Django-doc],其中两个框出现在彼此的上方和下方。

© www.soinside.com 2019 - 2024. All rights reserved.