首页 > 解决方案 > 当定义了两个不同的 ForeignKey 和 unique_together 时,如何减少一个 ForeignKey 的选项?

问题描述

我有三个模型ProductClothColorColor

# products/models.py

class Product(models.Model):
    ...


class Color(models.Model):
    ...


class ClothColor(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    color = models.ForeignKey(Color, on_delete=models.CASCADE)
    ...

    class Meta:
        unique_together = ('product', 'color',)

我想只允许产品和颜色的一种组合ClothColor,所以我unique_togetherMeta课堂上使用过。此约束工作正常。

现在,我用于在管理面板TabularInline中显示ClothColor,因此添加产品及其颜色变化会更容易。

# products/admin.py

class ClothColorInline(admin.TabularInline):
    model = ClothColor
    ...


class ProductAdmin(admin.ModelAdmin):
    ...
    inlines = (ClothColorInline,)

而且,这就是我的管理面板的外观。

现在,当我向 中的颜色字段添加新颜色时clothColor,它也会显示已使用的颜色。img:管理面板中的下拉菜单

由于unique_together限制,它向我显示错误,因此,它可以防止意外填充相同的颜色两次,但如果颜色已被使用,我需要一种方法来完全隐藏该选项。

那么,当我已经使用该颜色时,如何减少颜色字段中的选项?

标签: pythondjangodjango-admin

解决方案


推荐阅读