Нужно ли создавать одну модель для нескольких приложений в проекте одежды?
Я впервые создаю проект с Django. и это магазин электронной коммерции для одежды. моя путаница сейчас в том, что большинство товаров похожи, как женская одежда, мужская одежда, детская одежда. создание разных моделей в разных приложениях означает, что я должен повторить много кода, потому что большинство полей будут одинаковыми и некоторые операции будут более сложными для достижения, как глобальный поиск, и т.д.
Итак, должен ли я создать единую базу данных для всех товаров и отфильтровать то, что мне нужно в различных разделах, например, на странице мужской одежды, на странице женской одежды и т.д.?
#Для мужской модели
from django.db import models
from django.urls import reverse
# Create your models here.
CLOTH_CATEGORY_OPTIONS = (
("top", "Top"),
("bottom", "Bottom"),
("complete", "Complete"),
)
CLOTH_GENDER_OPTIONS = (
("male", "Male"),
("female", "Female"),
("unisex", "Unisex"),
)
class Wear(models.Model):
cloth_name = models.CharField(max_length=50, unique=True)
cloth_image = models.CharField(max_length=300)
cloth_category = models.CharField(
max_length=8, choices=CLOTH_CATEGORY_OPTIONS, default='top')
cloth_gender = models.CharField(
max_length=8, choices=CLOTH_GENDER_OPTIONS, default='male')
cloth_price = models.FloatField()
cloth_description = models.TextField()
slug = models.SlugField(default='', editable=False,
max_length=200, null=False)
#Для женской модели
from django.urls import reverse
# Create your models here.
CLOTH_CATEGORY_OPTIONS = (
("top", "Top"),
("bottom", "Bottom"),
("complete", "Complete"),
)
CLOTH_GENDER_OPTIONS = (
("male", "Male"),
("female", "Female"),
("unisex", "Unisex"),
)
class WomensWear(models.Model):
cloth_name = models.CharField(max_length=50, unique=True)
cloth_image = models.CharField(max_length=300)
cloth_category = models.CharField(
max_length=8, choices=CLOTH_CATEGORY_OPTIONS, default='top')
cloth_gender = models.CharField(
max_length=8, choices=CLOTH_GENDER_OPTIONS, default='male')
cloth_price = models.FloatField()
cloth_description = models.TextField()
slug = models.SlugField(default='', editable=False,
max_length=200, null=False)
Как вы можете видеть, это повторяется, поэтому я хочу создать глобальную базу данных, чтобы я мог импортировать ее в каждое приложение и отфильтровать для мужчин, женщин, детей и т.д.
Вам не нужно повторять весь этот код для каждого пола... Сделайте одну модель с полем Gender и укажите все полы. Вы можете фильтровать одежду в представлениях с помощью:
Wear.objects.all().filter(Gender=**Male or Women**)
Это отфильтрует ваши товары по указанному вами полу.
Создание двух моделей будет работать на вас. Модель ткани и модель пола Одна ткань может быть мужской или женской, или и той, и другой, поэтому будет работать от одного до многих
class Cloth(models.Model):
gender = models.ForiegnKey(Gender)
....
Вы будете фильтровать, используя:
Cloth.objects.filter(gender__type="male")