簡體   English   中英

Django:嘗試將用戶設置為遷移中的外鍵會引發 ValueError

[英]Django: Trying to set user as a foreign key in migration raises a ValueError

我有一個成員 class 擴展用戶 model

  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:無法分配“<User:testuser>”:“Member.user”必須是“User”實例。

知道為什么這不起作用嗎?

我有一個會員 class 擴展用戶 model

  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:無法分配“<User:testuser>”:“Member.user”必須是“User”實例。

知道為什么這不起作用嗎?

我有一個會員 class 擴展用戶 model

  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:無法分配“<User:testuser>”:“Member.user”必須是“User”實例。

知道為什么這不起作用嗎?

要在遷移文件功能中使用用戶模型,即使您定義了自定義用戶模型,也必須使用apps.get_model函數獲取用戶,不允許使用get_user_model獲取用戶模型。 像這樣。

User = apps.get_model('account', 'User')

當您以這種方式獲得用戶模型時,您沒有收到此錯誤ValueError: Cannot assign...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM