diff --git a/keeppolling/settings.py b/keeppolling/settings.py index 5bfa467..6c1bf80 100644 --- a/keeppolling/settings.py +++ b/keeppolling/settings.py @@ -38,6 +38,8 @@ INSTALLED_APPS = [ 'django.contrib.messages', "whitenoise.runserver_nostatic", 'django.contrib.staticfiles', + "landing", + "polls", ] MIDDLEWARE = [ diff --git a/polls/admin.py b/polls/admin.py index 8c38f3f..3505770 100644 --- a/polls/admin.py +++ b/polls/admin.py @@ -1,3 +1,14 @@ from django.contrib import admin +from polls.models import Poll, Vote, Option + # Register your models here. +admin.site.register( + Poll, +) +admin.site.register( + Option, +) +admin.site.register( + Vote, +) diff --git a/polls/migrations/0001_initial.py b/polls/migrations/0001_initial.py new file mode 100644 index 0000000..3803dcb --- /dev/null +++ b/polls/migrations/0001_initial.py @@ -0,0 +1,41 @@ +# Generated by Django 5.0.2 on 2024-03-02 02:52 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Poll', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('question', models.TextField(help_text='Question to ask the user', max_length=250)), + ], + ), + migrations.CreateModel( + name='Option', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('text', models.TextField(help_text='Poll Option', max_length=100)), + ('poll', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='polls.poll')), + ], + ), + migrations.CreateModel( + name='Vote', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('option', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='polls.option')), + ('poll', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='polls.poll')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/polls/models.py b/polls/models.py index 71a8362..6ba53d0 100644 --- a/polls/models.py +++ b/polls/models.py @@ -1,3 +1,56 @@ +from django.contrib.auth.models import User from django.db import models -# Create your models here. + +class Poll( + models.Model, +): + question = models.TextField( + max_length=250, + help_text="Question to ask the user", + ) + + def __str__( + self, + ): + return f"Poll: {self.question}" + + +class Option( + models.Model, +): + poll = models.ForeignKey( + Poll, + on_delete=models.CASCADE, + ) + text = models.TextField( + max_length=100, + help_text="Poll Option", + ) + + def __str__( + self, + ): + return f"Option for {self.poll}: {self.text}" + + +class Vote( + models.Model, +): + user = models.ForeignKey( + User, + on_delete=models.CASCADE, + ) + poll = models.ForeignKey( + Poll, + on_delete=models.CASCADE, + ) + option = models.ForeignKey( + Option, + on_delete=models.CASCADE, + ) + + def __str__( + self, + ): + return f"Vote by {self.user} for {self.poll} - Option:{self.option}"