Поле Django не переносится

У меня есть модель, для каждого объекта я хочу получить случайную строку при создании activation.

В настоящее время я создаю модель следующим образом;

from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import gettext_lazy as _
import string
import random

def get_random_12_string():
    return ''.join(random.choices(string.ascii_uppercase + string.ascii_lowercase + string.digits, k=12))


class Client(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='customer')

    organization = models.ForeignKey(Organization, on_delete=models.CASCADE, related_name='clients')
    phone_number = models.CharField(_("Phone Number"), max_length=15)  
    date_of_birth = models.DateField(_("Date of Birth"), blank=True, null=True)  # Optional

    created_at = models.DateTimeField(_("Created At"), auto_now_add=True)
    updated_at = models.DateTimeField(_("Updated At"), auto_now=True)
    activation = models.CharField(_("Activation Code"), max_length=14, default=get_random_12_string)

    def __str__(self):
        return f'{self.user.first_name} {self.user.last_name}'

    class Meta:
        verbose_name = _("Customer")
        verbose_name_plural = _("Customers")
        ordering = ['created_at']  # Orders by creation date by default in queries.

Однако после запуска python manage.py makemigrations и python manage.py migrate (оба говорят, что они успешны). Поле даже не создается в базе данных, а при переходе в панель администратора я получаю ошибку, что поле не существует.

Migrations for 'portal':
  portal\migrations\0005_alter_client_activation.py
    - Alter field activation on client

Operations to perform:
  Apply all migrations: admin, api, auth, contenttypes, cookie_consent, portal, public, sessions, sites
Running migrations:
  Applying portal.0005_alter_client_activation... OK

MariaDB Table Schema

Файл(ы) миграции. 001_initial.py

# Generated by Django 3.2.23 on 2024-03-26 04:18

import datetime
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import portal.models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='Client',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('phone_number', models.CharField(max_length=15, verbose_name='Phone Number')),
                ('date_of_birth', models.DateField(blank=True, null=True, verbose_name='Date of Birth')),
                ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
                ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')),
                ('activation', models.CharField(default=portal.models.get_random_12_string, max_length=14, verbose_name='Activation Code')),
            ],
            options={
                'verbose_name': 'Customer',
                'verbose_name_plural': 'Customers',
                'ordering': ['created_at'],
            },
        ),
        migrations.AddField(
            model_name='client',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='clients', to='portal.organization'),
        ),
        migrations.AddField(
            model_name='client',
            name='user',
            field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='customer', to=settings.AUTH_USER_MODEL),
        ),
    ]

Однако после запуска python manage.py makemigrations & python manage.py migrate (оба говорят, что они успешны). Поле даже не создается в базе данных, а при переходе в панель администратора я получаю ошибку, что поле не существует.

добавьте название вашего приложения после команд миграции.

e.g

python manage.py makemigrations your_app_name
python manage.py migrate your_app_name
Вернуться на верх