在 django admin 中仅显示外键的某些值

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

我的 django 项目中有三个模型。我只希望那些产品显示在 django admin 中已经存在变体的variation_price 模型的产品字段中。我怎样才能做到这一点?

在 models.py 中:

class VariationManager(models.Manager):
    def color(self):
        return super(VariationManager,self).filter(variation_category='color', is_active=True)
    
    def sizes(self):
        return super(VariationManager, self).filter(variation_category='size', is_active=True)

variation_category_choice = (
    ('color', 'color'),
    ('size', 'size'),
)

class Variation(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    variation_category = models.CharField(max_length=100, choices=variation_category_choice)
    variation_value = models.CharField(max_length=100) 
    objects = VariationManager()


class variation_price(models.Model):
    price = models.IntegerField()
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    variations = models.ManyToManyField(Variation, blank=True)
    is_active = models.BooleanField(default=True)

谢谢

django django-models django-views django-forms django-admin
1个回答
0
投票

您可以使用

limit_choices_to=…
 [Django-doc]:

进行过滤
class variation_price(models.Model):
    price = models.IntegerField()
    product = models.ForeignKey(
        Product,
        limit_choices_to={'variation__isnull': False},
        on_delete=models.CASCADE,
    )
    variations = models.ManyToManyField(Variation, blank=True)
    is_active = models.BooleanField(default=True)
© www.soinside.com 2019 - 2024. All rights reserved.