basic models
This commit is contained in:
parent
4e5b5e6416
commit
9635af599f
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
.venv
|
.venv
|
||||||
__pycache__
|
__pycache__
|
||||||
|
db.sqlite3
|
Binary file not shown.
93
server/server/migrations/0001_initial.py
Normal file
93
server/server/migrations/0001_initial.py
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
# Generated by Django 4.2.7 on 2023-11-30 20:12
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Game',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.CharField(max_length=200)),
|
||||||
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='date created')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Game',
|
||||||
|
'verbose_name_plural': 'Games',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Guild',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.CharField(max_length=200)),
|
||||||
|
('tag', models.CharField(max_length=10)),
|
||||||
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='date created')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Guild',
|
||||||
|
'verbose_name_plural': 'Guilds',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Player',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.CharField(max_length=200)),
|
||||||
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='date created')),
|
||||||
|
('guild', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='players', to='server.guild')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Player',
|
||||||
|
'verbose_name_plural': 'Players',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='PlayerGameProfile',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='date created')),
|
||||||
|
('game', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='player_profiles', to='server.game')),
|
||||||
|
('player', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='game_profiles', to='server.player')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Player Game Profile',
|
||||||
|
'verbose_name_plural': 'Player Game Profiles',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='WowProfile',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('level', models.IntegerField()),
|
||||||
|
('class_name', models.CharField(max_length=200)),
|
||||||
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='date created')),
|
||||||
|
('player_game_profile', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='wow_profile', to='server.playergameprofile')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'WoW Profile',
|
||||||
|
'verbose_name_plural': 'WoW Profiles',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='ValorantProfile',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('rank', models.CharField(max_length=200)),
|
||||||
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='date created')),
|
||||||
|
('player_game_profile', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='valorant_profile', to='server.playergameprofile')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Valorant Profile',
|
||||||
|
'verbose_name_plural': 'Valorant Profiles',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
0
server/server/migrations/__init__.py
Normal file
0
server/server/migrations/__init__.py
Normal file
87
server/server/models.py
Normal file
87
server/server/models.py
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
class Guild(models.Model):
|
||||||
|
name = models.CharField(max_length=200)
|
||||||
|
tag = models.CharField(max_length=10)
|
||||||
|
creation_date = models.DateTimeField("date created", auto_now_add=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"{self.name} [{self.tag}]"
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = "Guild"
|
||||||
|
verbose_name_plural = "Guilds"
|
||||||
|
|
||||||
|
|
||||||
|
class Player(models.Model):
|
||||||
|
name = models.CharField(max_length=200)
|
||||||
|
guild = models.ForeignKey(Guild, on_delete=models.CASCADE, related_name="players")
|
||||||
|
creation_date = models.DateTimeField("date created", auto_now_add=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = "Player"
|
||||||
|
verbose_name_plural = "Players"
|
||||||
|
|
||||||
|
|
||||||
|
class Game(models.Model):
|
||||||
|
name = models.CharField(max_length=200)
|
||||||
|
creation_date = models.DateTimeField("date created", auto_now_add=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = "Game"
|
||||||
|
verbose_name_plural = "Games"
|
||||||
|
|
||||||
|
|
||||||
|
class PlayerGameProfile(models.Model):
|
||||||
|
player = models.ForeignKey(
|
||||||
|
Player, on_delete=models.CASCADE, related_name="game_profiles"
|
||||||
|
)
|
||||||
|
game = models.ForeignKey(
|
||||||
|
Game, on_delete=models.CASCADE, related_name="player_profiles"
|
||||||
|
)
|
||||||
|
creation_date = models.DateTimeField("date created", auto_now_add=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"{self.player} - {self.game}"
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = "Player Game Profile"
|
||||||
|
verbose_name_plural = "Player Game Profiles"
|
||||||
|
|
||||||
|
|
||||||
|
class WowProfile(models.Model):
|
||||||
|
player_game_profile = models.OneToOneField(
|
||||||
|
PlayerGameProfile, on_delete=models.CASCADE, related_name="wow_profile"
|
||||||
|
)
|
||||||
|
level = models.IntegerField()
|
||||||
|
class_name = models.CharField(max_length=200)
|
||||||
|
creation_date = models.DateTimeField("date created", auto_now_add=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"{self.player_game_profile.player} - {self.player_game_profile.game}"
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = "WoW Profile"
|
||||||
|
verbose_name_plural = "WoW Profiles"
|
||||||
|
|
||||||
|
|
||||||
|
class ValorantProfile(models.Model):
|
||||||
|
player_game_profile = models.OneToOneField(
|
||||||
|
PlayerGameProfile, on_delete=models.CASCADE, related_name="valorant_profile"
|
||||||
|
)
|
||||||
|
rank = models.CharField(max_length=200)
|
||||||
|
creation_date = models.DateTimeField("date created", auto_now_add=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"{self.player_game_profile.player} - {self.player_game_profile.game}"
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = "Valorant Profile"
|
||||||
|
verbose_name_plural = "Valorant Profiles"
|
44
server/server/serializers.py
Normal file
44
server/server/serializers.py
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
from rest_framework import serializers
|
||||||
|
from .models import Guild, Player, Game, PlayerGameProfile, WowProfile, ValorantProfile
|
||||||
|
|
||||||
|
|
||||||
|
class GuildSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Guild
|
||||||
|
fields = ["id", "name", "tag", "creation_date"]
|
||||||
|
read_only_fields = ["id", "creation_date"]
|
||||||
|
|
||||||
|
|
||||||
|
class PlayerSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Player
|
||||||
|
fields = ["id", "name", "guild", "creation_date"]
|
||||||
|
read_only_fields = ["id", "creation_date"]
|
||||||
|
|
||||||
|
|
||||||
|
class GameSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Game
|
||||||
|
fields = ["id", "name", "creation_date"]
|
||||||
|
read_only_fields = ["id", "creation_date"]
|
||||||
|
|
||||||
|
|
||||||
|
class PlayerGameProfileSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = PlayerGameProfile
|
||||||
|
fields = ["id", "player", "game", "creation_date"]
|
||||||
|
read_only_fields = ["id", "creation_date"]
|
||||||
|
|
||||||
|
|
||||||
|
class WowProfileSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = WowProfile
|
||||||
|
fields = ["id", "player_game_profile", "level", "class_name", "creation_date"]
|
||||||
|
read_only_fields = ["id", "creation_date"]
|
||||||
|
|
||||||
|
|
||||||
|
class ValorantProfileSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = ValorantProfile
|
||||||
|
fields = ["id", "player_game_profile", "rank", "creation_date"]
|
||||||
|
read_only_fields = ["id", "creation_date"]
|
@ -37,6 +37,8 @@ INSTALLED_APPS = [
|
|||||||
"django.contrib.sessions",
|
"django.contrib.sessions",
|
||||||
"django.contrib.messages",
|
"django.contrib.messages",
|
||||||
"django.contrib.staticfiles",
|
"django.contrib.staticfiles",
|
||||||
|
"rest_framework",
|
||||||
|
"server",
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
|
@ -1,24 +1,16 @@
|
|||||||
"""
|
from django.urls import path, include
|
||||||
URL configuration for server project.
|
from rest_framework.routers import DefaultRouter
|
||||||
|
from .views import GameViewSet, GuildViewSet, PlayerViewSet, PlayerGameProfileViewSet, WowProfileViewSet, ValorantProfileViewSet, hello_world
|
||||||
|
|
||||||
The `urlpatterns` list routes URLs to views. For more information please see:
|
router = DefaultRouter()
|
||||||
https://docs.djangoproject.com/en/4.2/topics/http/urls/
|
router.register(r'games', GameViewSet)
|
||||||
Examples:
|
router.register(r'guilds', GuildViewSet)
|
||||||
Function views
|
router.register(r'players', PlayerViewSet)
|
||||||
1. Add an import: from my_app import views
|
router.register(r'player-game-profiles', PlayerGameProfileViewSet)
|
||||||
2. Add a URL to urlpatterns: path('', views.home, name='home')
|
router.register(r'wow-profiles', WowProfileViewSet)
|
||||||
Class-based views
|
router.register(r'valorant-profiles', ValorantProfileViewSet)
|
||||||
1. Add an import: from other_app.views import Home
|
|
||||||
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
|
|
||||||
Including another URLconf
|
|
||||||
1. Import the include() function: from django.urls import include, path
|
|
||||||
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
|
||||||
"""
|
|
||||||
from django.contrib import admin
|
|
||||||
from django.urls import path
|
|
||||||
from .views import hello_world
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', hello_world),
|
path('', hello_world, name='index'),
|
||||||
path("admin/", admin.site.urls),
|
path('', include(router.urls)),
|
||||||
]
|
]
|
||||||
|
@ -1,5 +1,38 @@
|
|||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
|
from rest_framework import viewsets
|
||||||
|
from .models import Game, Guild, Player, PlayerGameProfile, WowProfile, ValorantProfile
|
||||||
|
from .serializers import GameSerializer, GuildSerializer, PlayerSerializer, PlayerGameProfileSerializer, WowProfileSerializer, ValorantProfileSerializer
|
||||||
|
|
||||||
|
|
||||||
def hello_world(request):
|
def hello_world(request):
|
||||||
return HttpResponse("Hello, World!")
|
return HttpResponse("Hello, World!")
|
||||||
|
|
||||||
|
|
||||||
|
class GameViewSet(viewsets.ModelViewSet):
|
||||||
|
queryset = Game.objects.all()
|
||||||
|
serializer_class = GameSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class GuildViewSet(viewsets.ModelViewSet):
|
||||||
|
queryset = Guild.objects.all()
|
||||||
|
serializer_class = GuildSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class PlayerViewSet(viewsets.ModelViewSet):
|
||||||
|
queryset = Player.objects.all()
|
||||||
|
serializer_class = PlayerSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class PlayerGameProfileViewSet(viewsets.ModelViewSet):
|
||||||
|
queryset = PlayerGameProfile.objects.all()
|
||||||
|
serializer_class = PlayerGameProfileSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class WowProfileViewSet(viewsets.ModelViewSet):
|
||||||
|
queryset = WowProfile.objects.all()
|
||||||
|
serializer_class = WowProfileSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class ValorantProfileViewSet(viewsets.ModelViewSet):
|
||||||
|
queryset = ValorantProfile.objects.all()
|
||||||
|
serializer_class = ValorantProfileSerializer
|
||||||
|
Loading…
x
Reference in New Issue
Block a user