Django: попытка установить пользователя в качестве внешнего ключа при миграции вызывает ошибку ValueError - PullRequest
0 голосов
/ 04 августа 2020

У меня есть класс Member, расширяющий модель User

  class Member(models.Model):
    user = models.OneToOneField(User, on_delete=models.PROTECT)
    # extra fields

Когда я пытаюсь использовать следующую настраиваемую миграцию для предварительного заполнения базы данных начальным набором данных из файла

from django.db import migrations
from django.contrib.auth.models import User
import pandas as pd


def add_data_from_file(apps, schema_editor):
    Member = apps.get_model('persons', 'Member')
    df = pd.read_excel('path_to_file', sheet_name='sheet_name')

    for ind in df.index:
        user = User.objects.create_user(
            username=df.username[ind],
            first_name=df.first_name[ind],
            last_name=df.last_name[ind],
            email=df.email[ind],
            password=df.password[ind],
        )
        Member.objects.create(
            user=user,
            date_start=df.date_start[ind],
            date_stop=df.date_stop[ind]
        )


class Migration(migrations.Migration):

    dependencies = [
        ('persons', '0001_initial'),
    ]

    operations = [
        migrations.RunPython(add_data_from_file),
    ]

Django вызывает:

ValueError: невозможно присвоить " ":" Member.user "должен быть экземпляром" User ".

Есть идеи, почему это не работает?

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Я до сих пор не знаю, почему сама миграция не работает, но загрузка данных с помощью команды управления работает нормально.

0 голосов
/ 04 августа 2020

В идеале код должен работать, можете ли вы перепроверить импорт пользователя в models.py, это из модели, которую вы определили?

...