Манипулировать Django ManyToManyField () в соответствии с категорией, выбранной в той же модели - PullRequest
0 голосов
/ 02 октября 2019

У меня есть эти две модели, первая из которых имеет категорию, а вторая имеет размер, связанный с определенной категорией

class MasterCategory(models.Model):
    category_name  = models.CharField(max_length=100)

    def __str__(self):
        return self.category_name


class MasterSizes(models.Model):
    category_name = models.ForeignKey(MasterCategory,on_delete=models.CASCADE)
    category_size = models.CharField(max_length=2)

    def __str__(self):
        return self.category_size

Это модель продукта, в которой я хочу выбрать размеры, относящиеся к выбранной категории, и позволить пользователю выбрать несколько размеров ввремя.

class Product(models.Model):
    category_name          = models.ForeignKey(MasterCategory,on_delete=models.CASCADE)
    # subcategory_name       = models.
    product_brand          = models.CharField(max_length=50)
    product_title          = models.CharField(max_length=50)
    product_summary        = models.CharField(max_length=200)
    product_description    = models.TextField()
    original_price         = models.FloatField()
    # discount_rate =models.IntegerField(null=True, blank=True)
    related_size           = MasterSizes.objects.filter(category_name=category_name)
    available_sizes        = models.ManyToManyField(related_size,related_name='category_sizes')
    discount_price         = models.FloatField()
    product_image          = models.ImageField()
    product_size           = models.ForeignKey(MasterSizes, on_delete=models.CASCADE)
    favourite              = models.BooleanField(default=False)

    def __str__(self):
        return self.product_title

Как мне отфильтровать ManyToManyField () только для выбранных категорий, связанных размеров только

** Прямо сейчас **

Показывает все размерыin available_sizes Но я хочу получить размеры, относящиеся только к выбранной категории.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...