Как хранить несколько значений в поле внешнего ключа?
Мне нужно добавить несколько категорий в поле бренда. Вот код
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)