ForeignKey отсутствует необходимый позиционный аргумент on_delete при попытке создать миграцию Django - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь создать таблицы, используя python / django и postgres.Я создаю классы для каждой таблицы базы данных в models.py.Когда я пытаюсь создать миграции, мне выдаются следующие ошибки:

File "..\database\models.py", line 40, in <module>
    class group(models.Model):
File "database\models.py", line 41, in group
    user_id = models.ForeignKey(user) TypeError: __init__() missing 1 required positional argument: 'on_delete'

Это мой код

class user(models.Model):
    STATUS_CHOICES = (
        ('active','Active'),
        ('not active', 'Not active')
    )
    user_id= models.AutoField(primary_key=True)
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    email = models.EmailField(max_length=70, null=True, blank=True, unique=True)
    phone = models.CharField( max_length=17, blank=True)
    gender = models.CharField(max_length=50)
    region = models.CharField(max_length=50)
    password = models.CharField(widget=models.PasswordInput)
    active = models.CharField(max_length=50, choices=STATUS_CHOICES, default='not active')
    register_date = models.DateField(default=date.today)

    def _str_(self):
        return self.user_id

class train(models.Model):
    train_CHOICES = (
        ('intercity', 'Intercity'),
        ('sprinter', 'Sprinter')
    )
    train_id= models.AutoField(primary_key=True)
    train_type = models.CharField(max_length=50, choices=train_CHOICES, default='intercity')

    def _str_(self):
        return self.train_id

class group(models.Model):
    user_id = models.ForeignKey(user)
    group_id = models.AutoField(primary_key=True)
    trip_id = models.ForeignKey(trip)
    created_date = models.DateField(default=date.today)
    started_at = models.DateTimeField()

    def _str_(self):
        return self.group_id

Я действительно новичок в Python.Я предполагаю, что есть много ошибок.Не могли бы вы дать намек?

1 Ответ

0 голосов
/ 30 мая 2018

on_delete является обязательным аргументом для ForeignKey, вы должны добавить его для всех ForeignKey полей:

user_id = models.ForeignKey(user, on_delete=models.CASCADE)
trip_id = models.ForeignKey(trip, on_delete=models.CASCADE)

Примечание on_delete=models.CASCADE означает, что при удалении пользователя илиОбъект отключения Django удаляет объекты, содержащие ForeignKey.Вы можете найти список других опций здесь .

...