Skip to content

Commit

Permalink
#8 feat : create products/list api & modify some models (#19)
Browse files Browse the repository at this point in the history
* chore : add ALLOWED HOSTS

* #8 feat : create products/list api & modify some models
  • Loading branch information
0321minji authored Feb 3, 2024
1 parent c921224 commit b0bc130
Show file tree
Hide file tree
Showing 15 changed files with 600 additions and 12 deletions.
19 changes: 18 additions & 1 deletion core/views.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
from django.shortcuts import render

# Create your views here.
from rest_framework import status
from rest_framework.response import Response


def get_paginated_response(*, pagination_class, serializer_class, queryset, request, view):
paginator = pagination_class()

page = paginator.paginate_queryset(queryset, request, view=view)

if page is not None:
serializer = serializer_class(page, many=True, context={'request': request})
else:
serializer = serializer_class(queryset, many=True, context={'request': request})

return Response({
'status': 'success',
'data': paginator.get_paginated_response(serializer.data).data,
}, status=status.HTTP_200_OK)
33 changes: 33 additions & 0 deletions products/admin.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,40 @@
from django.contrib import admin
from . import models

@admin.register(models.Category)
class Category(admin.ModelAdmin):

""" """

pass

@admin.register(models.Fit)
class Fit(admin.ModelAdmin):

""" """

pass

@admin.register(models.Texture)
class Texture(admin.ModelAdmin):

""" """

pass

@admin.register(models.Style)
class Style(admin.ModelAdmin):

""" """

pass

@admin.register(models.Detail)
class Detail(admin.ModelAdmin):

""" """

pass

@admin.register(models.Product)
class Product(admin.ModelAdmin):
Expand Down
25 changes: 25 additions & 0 deletions products/migrations/0006_product_like_cnt_product_likeuser_set.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Generated by Django 4.0 on 2024-01-24 11:59

from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('products', '0005_remove_product_category_remove_product_like_cnt_and_more'),
]

operations = [
migrations.AddField(
model_name='product',
name='like_cnt',
field=models.PositiveIntegerField(default=0),
),
migrations.AddField(
model_name='product',
name='likeuser_set',
field=models.ManyToManyField(blank=True, related_name='liked_products', to=settings.AUTH_USER_MODEL),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Generated by Django 4.0 on 2024-01-27 01:55

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('products', '0006_product_like_cnt_product_likeuser_set'),
]

operations = [
migrations.CreateModel(
name='Category',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
],
),
migrations.CreateModel(
name='Fit',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
],
),
migrations.CreateModel(
name='Style',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
],
),
migrations.CreateModel(
name='Texture',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
],
),
migrations.AddField(
model_name='product',
name='category',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='products', to='products.category'),
preserve_default=False,
),
migrations.AddField(
model_name='product',
name='fit',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='products', to='products.fit'),
),
migrations.AddField(
model_name='product',
name='style',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='products', to='products.style'),
),
migrations.AddField(
model_name='product',
name='texture',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='products', to='products.texture'),
),
]
19 changes: 19 additions & 0 deletions products/migrations/0008_alter_product_category.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Generated by Django 4.0 on 2024-01-27 02:11

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('products', '0007_category_fit_style_texture_product_category_and_more'),
]

operations = [
migrations.AlterField(
model_name='product',
name='category',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='products', to='products.category'),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Generated by Django 4.0 on 2024-01-27 05:23

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('products', '0008_alter_product_category'),
]

operations = [
migrations.CreateModel(
name='Option',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
('price', models.CharField(blank=True, max_length=100)),
],
),
migrations.AlterField(
model_name='product',
name='category',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='products', to='products.category'),
),
migrations.AlterField(
model_name='product',
name='option',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='products', to='products.option'),
),
]
21 changes: 21 additions & 0 deletions products/migrations/0010_alter_product_option_delete_option.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Generated by Django 4.0 on 2024-01-27 05:31

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('products', '0009_option_alter_product_category_alter_product_option'),
]

operations = [
migrations.AlterField(
model_name='product',
name='option',
field=models.TextField(blank=True),
),
migrations.DeleteModel(
name='Option',
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Generated by Django 4.0 on 2024-01-27 07:04

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('products', '0010_alter_product_option_delete_option'),
]

operations = [
migrations.RemoveField(
model_name='product',
name='fit',
),
migrations.AddField(
model_name='product',
name='fit',
field=models.ManyToManyField(blank=True, null=True, related_name='products', to='products.Fit'),
),
migrations.RemoveField(
model_name='product',
name='style',
),
migrations.AddField(
model_name='product',
name='style',
field=models.ManyToManyField(blank=True, null=True, related_name='products', to='products.Style'),
),
migrations.RemoveField(
model_name='product',
name='texture',
),
migrations.AddField(
model_name='product',
name='texture',
field=models.ManyToManyField(blank=True, null=True, related_name='products', to='products.Texture'),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Generated by Django 4.0 on 2024-01-31 11:37

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('products', '0011_remove_product_fit_product_fit_remove_product_style_and_more'),
]

operations = [
migrations.AlterField(
model_name='product',
name='fit',
field=models.ManyToManyField(blank=True, related_name='products', to='products.Fit'),
),
migrations.AlterField(
model_name='product',
name='style',
field=models.ManyToManyField(blank=True, related_name='products', to='products.Style'),
),
migrations.AlterField(
model_name='product',
name='texture',
field=models.ManyToManyField(blank=True, related_name='products', to='products.Texture'),
),
]
25 changes: 25 additions & 0 deletions products/migrations/0013_detail_product_detail.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Generated by Django 4.0 on 2024-01-31 12:16

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('products', '0012_alter_product_fit_alter_product_style_and_more'),
]

operations = [
migrations.CreateModel(
name='Detail',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
],
),
migrations.AddField(
model_name='product',
name='detail',
field=models.ManyToManyField(blank=True, related_name='products', to='products.Detail'),
),
]
37 changes: 34 additions & 3 deletions products/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,50 @@
from core.models import TimeStampedModel
# Create your models here.

class Category(models.Model):
name = models.CharField(max_length=100,blank=False)

class Style(models.Model):
name = models.CharField(max_length=100,blank=False)

class Texture(models.Model):
name = models.CharField(max_length=100,blank=False)

class Fit(models.Model):
name = models.CharField(max_length=100,blank=False)

class Detail(models.Model):
name = models.CharField(max_length=100,blank=False)

class Product(TimeStampedModel):
name = models.CharField(max_length=100)
#category = models.ForeignKey('Category', related_name='products', on_delete=models.CASCADE, null=False, blank=False)
#필터링 항목
# category = models.ForeignKey('Category', related_name='products', on_delete=models.CASCADE, default=1)
category = models.ForeignKey('Category', related_name='products',on_delete=models.CASCADE, null=True, blank=True)
style = models.ManyToManyField('Style',related_name='products',blank=True)
texture = models.ManyToManyField('Texture',related_name='products',blank=True)
fit = models.ManyToManyField('Fit',related_name='products',blank=True)
detail = models.ManyToManyField('Detail',related_name='products',blank=True)
# option = models.ForeignKey('Option',related_name='products', on_delete=models.CASCADE, null=True, blank = True)

basic_price = models.CharField(max_length=500, blank = False)
option = models.TextField(blank = True)
info = models.TextField(blank = True)
notice = models.TextField(blank = True)
option = models.TextField(blank = True)
period = models.CharField(max_length=100, blank = True)
transaction_direct = models.BooleanField(default=False)
transaction_package = models.BooleanField(default=False)
refund = models.TextField(blank = True)
reformer = models.ForeignKey('users.User', related_name='products', on_delete=models.SET_NULL, null=True, blank=False)


likeuser_set = models.ManyToManyField("users.User", related_name='liked_products', blank=True)
like_cnt = models.PositiveIntegerField(default=0)

def like(self):
self.like_cnt+=1

def dislike(self):
self.like_cnt-=1


class ProductKeyword(models.Model):
Expand Down
Loading

0 comments on commit b0bc130

Please sign in to comment.