basic models
This commit is contained in:
parent
4e5b5e6416
commit
9635af599f
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
.venv
|
||||
__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.messages",
|
||||
"django.contrib.staticfiles",
|
||||
"rest_framework",
|
||||
"server",
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
|
@ -1,24 +1,16 @@
|
||||
"""
|
||||
URL configuration for server project.
|
||||
from django.urls import path, include
|
||||
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:
|
||||
https://docs.djangoproject.com/en/4.2/topics/http/urls/
|
||||
Examples:
|
||||
Function views
|
||||
1. Add an import: from my_app import views
|
||||
2. Add a URL to urlpatterns: path('', views.home, name='home')
|
||||
Class-based views
|
||||
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
|
||||
router = DefaultRouter()
|
||||
router.register(r'games', GameViewSet)
|
||||
router.register(r'guilds', GuildViewSet)
|
||||
router.register(r'players', PlayerViewSet)
|
||||
router.register(r'player-game-profiles', PlayerGameProfileViewSet)
|
||||
router.register(r'wow-profiles', WowProfileViewSet)
|
||||
router.register(r'valorant-profiles', ValorantProfileViewSet)
|
||||
|
||||
urlpatterns = [
|
||||
path('', hello_world),
|
||||
path("admin/", admin.site.urls),
|
||||
path('', hello_world, name='index'),
|
||||
path('', include(router.urls)),
|
||||
]
|
||||
|
@ -1,5 +1,38 @@
|
||||
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):
|
||||
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