Db idx and on_delete for foreignkeys

This commit is contained in:
Sebastian Lohff 2017-01-23 02:40:44 +01:00
parent 8d58030cc0
commit 110271457d
2 changed files with 87 additions and 8 deletions

View File

@ -0,0 +1,76 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.5 on 2017-01-23 01:39
from __future__ import unicode_literals
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('contest', '0008_auto_20170119_1202'),
]
operations = [
migrations.AlterField(
model_name='contest',
name='callQrg',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='contest.Frequency'),
),
migrations.AlterField(
model_name='frequency',
name='note',
field=models.CharField(blank=True, max_length=50),
),
migrations.AlterField(
model_name='qso',
name='call',
field=models.CharField(db_index=True, max_length=20),
),
migrations.AlterField(
model_name='qso',
name='otherNo',
field=models.IntegerField(verbose_name='Nr-R'),
),
migrations.AlterField(
model_name='qso',
name='ownNo',
field=models.IntegerField(verbose_name='Nr-S'),
),
migrations.AlterField(
model_name='qso',
name='ref',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='contest.Reference'),
),
migrations.AlterField(
model_name='qso',
name='refStr',
field=models.CharField(max_length=20, verbose_name='EXC'),
),
migrations.AlterField(
model_name='qso',
name='reportRX',
field=models.CharField(default=59, max_length=7, validators=[django.core.validators.RegexValidator('[1-5][1-9]')], verbose_name='RST-R'),
),
migrations.AlterField(
model_name='qso',
name='reportTX',
field=models.CharField(default=59, max_length=7, validators=[django.core.validators.RegexValidator('[1-5][1-9]')], verbose_name='RST-S'),
),
migrations.AlterField(
model_name='reference',
name='name',
field=models.CharField(db_index=True, max_length=20, unique=True),
),
migrations.AlterField(
model_name='user',
name='ref',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='contest.Reference'),
),
migrations.AlterIndexTogether(
name='qso',
index_together=set([('owner', 'call')]),
),
]

View File

@ -9,20 +9,20 @@ from .validators import CallUsernameValidator
class Contest(models.Model): class Contest(models.Model):
name = models.CharField(max_length=20) name = models.CharField(max_length=20)
shortName = models.CharField(max_length=20, unique=True) shortName = models.CharField(max_length=20, unique=True)
callQrg = models.ForeignKey("Frequency", null=True, blank=True) callQrg = models.ForeignKey("Frequency", models.SET_NULL, null=True, blank=True)
def __str__(self): def __str__(self):
return self.name return self.name
class Reference(models.Model): class Reference(models.Model):
name = models.CharField(max_length=20, unique=True) name = models.CharField(max_length=20, unique=True, db_index=True)
description = models.TextField() description = models.TextField()
def __str__(self): def __str__(self):
return self.name return self.name
class User(AbstractUser): class User(AbstractUser):
ref = models.ForeignKey(Reference, null=True, blank=True) ref = models.ForeignKey(Reference, models.SET_NULL,null=True, blank=True)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(User, self).__init__(*args, **kwargs) super(User, self).__init__(*args, **kwargs)
@ -50,13 +50,16 @@ class Frequency(models.Model):
class QSO(models.Model): class QSO(models.Model):
reportValidator = RegexValidator("[1-5][1-9]") reportValidator = RegexValidator("[1-5][1-9]")
owner = models.ForeignKey(User) class Meta:
index_together = [
["owner", "call"],
]
owner = models.ForeignKey(User, db_index=True)
time = models.DateTimeField(blank=True) time = models.DateTimeField(blank=True)
call = models.CharField(max_length=20) call = models.CharField(max_length=20, db_index=True)
band = models.ForeignKey(Band) band = models.ForeignKey(Band)
reportTX = models.CharField(max_length=7, default=59, verbose_name='RST-S', validators=[reportValidator]) reportTX = models.CharField(max_length=7, default=59, verbose_name='RST-S', validators=[reportValidator])
reportRX = models.CharField(max_length=7, default=59, verbose_name='RST-R', validators=[reportValidator]) reportRX = models.CharField(max_length=7, default=59, verbose_name='RST-R', validators=[reportValidator])
@ -64,7 +67,7 @@ class QSO(models.Model):
otherNo = models.IntegerField(verbose_name='Nr-R') otherNo = models.IntegerField(verbose_name='Nr-R')
refStr = models.CharField(max_length=20, verbose_name="EXC") refStr = models.CharField(max_length=20, verbose_name="EXC")
ref = models.ForeignKey(Reference, null=True, blank=True) ref = models.ForeignKey(Reference, models.SET_NULL, null=True, blank=True)
remarks = models.CharField(max_length=50, blank=True) remarks = models.CharField(max_length=50, blank=True)