Как хранить несколько значений в поле внешнего ключа?

Мне нужно добавить несколько категорий в поле бренда. Вот код

class Brand_Category(models.Model):
    """
        this model is use to store the data of products category
    """
    name = models.CharField(max_length=50, unique=True, verbose_name="Brand Category Name")
    slug = models.SlugField(max_length=140, unique=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True, null=True, blank=True)


class Brand(models.Model):
    """
        This model is use to store the data of products sub category
    """
    user = models.ForeignKey(User, related_name='brand_user', on_delete=models.CASCADE,null=True,blank=True, default=None)
    name = models.CharField(max_length=50, unique=True, verbose_name="Brand Name")
    brand_img = models.FileField(verbose_name='Upload Image')
    category = models.ForeignKey(Brand_Category, related_name='brand_category', on_delete=models.PROTECT, null=True)
    slug = models.SlugField(max_length=140, unique=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True, null=True, blank=True)

У меня есть форма бренда, где я добавляю несколько категорий. Эти категории хранятся в модели brand_category, и я хотел бы сохранить id нескольких категорий в одном поле brand. как я могу это сделать? Я нашел информацию о поле onetomany в django, но, похоже, оно устарело, а другие предложения не похожи на мою проблему. Однако, категория не связана строго с каким-либо брендом.

Вот код вставки

brand_name = request.POST["brand_name"]
        image = request.FILES['image']
        brand_category = request.POST.getlist("brand_category")
        
        brand = models.Brand.objects.create(
            user = request.user,
            name = brand_name,
            brand_img = image,
            category_id = brand_category,
        ).save()

Попробуйте использовать отношения "многие ко многим" в качестве поля brand_category_field. С помощью этого отношения вы можете иметь один бренд, связанный с несколькими категориями, и при этом категория не может быть ограничена одним брендом

Посторонний ключ - это отношение "один ко многим". В вашем случае, одна категория может иметь много брендов, поэтому если бренд должен быть в другой категории, это означает, что в этом случае вы должны изменить отношение с отношения внешнего ключа на отношение "многие ко многим"

Пройдите по ссылке ниже для ознакомления

https://docs.djangoproject.com/en/4.0/topics/db/examples/many_to_many/


class Brand(models.Model):
    """
        This model is use to store the data of products sub category
    """
    user = models.ForeignKey(User, related_name='brand_user', on_delete=models.CASCADE,null=True,blank=True, default=None)
    name = models.CharField(max_length=50, unique=True, verbose_name="Brand Name")
    brand_img = models.FileField(verbose_name='Upload Image')
    category = models.ManyToManyField(Brand_Category,related_name='brand_category')
    slug = models.SlugField(max_length=140, unique=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True, null=True, blank=True)


Вернуться на верх