Django - 将字典数据导入具有外键的模型数据

2024-05-01 02:04:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道下面的模型.py在

from django.db import models

class User(models.Model):
     user_name = models.CharField(max_length = 50)

def __str__(self):
    return self.user_name

class Profile(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE,)
    hobby = models.CharField(max_length = 50, unique = True)
    job = models.CharField(max_length = 60)

我创建了一个名为“Elvin”的用户对象实例。在

我知道下面的视图.py在

^{pr2}$

但是,valueIt返回一个错误。无法分配“'Elvin'”:配置文件.user“”必须是“用户”实例。在

我想知道如何将字典数据导入模型数据中的ForeignKey数据?谢谢。在


Tags: 数据namepy模型selfmodelmodelslength
1条回答
网友
1楼 · 发布于 2024-05-01 02:04:25

您的Profile模型包含ForeignKey到{}模型。所以当我们试图创建Profile对象user字段时,应该是User实例。因此,将item中的user键的值更改为一个用户实例

from django.shortcuts import render
from django.db import IntegrityError
from .models import User, Profile, User


def create(request):
    # create the user instance first then 
    # make this object as value of key in the dictionary.

    user_ = User.objects.create(user_name='Elvin')
    item = { 'user': user_, 'hobby': 'horse riding', 'job': 'banker'}

    try:
        profile = Profile.objects.create(**item)    
    except IntegrityError:
        pass

    template = 'index.html'
    thing = Profile.objects.order_by('-hobby')
    context = {'thing':thing}
    return render(request, template, context)

注意

当您尝试使用profile = Profile.objects.create(**item)创建对象时,不需要再次调用profile.save(),因为Profile.objects.create隐式调用save方法。在

相关问题 更多 >