加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Django / Sqlite3为带有外键的模型添加一行

发布时间:2020-12-16 22:17:07 所属栏目:Python 来源:网络整理
导读:我是Django和SQlite3的新手.我有一个模型(Person),带有(Person_Type)的外键: class Person(models.Model): name = models.CharField(max_length=500) pers_type = models.ForeignKey(Person_Type) def __unicode__(self): return self.nameclass Person_Typ

我是Django和SQlite3的新手.我有一个模型(Person),带有(Person_Type)的外键:

class Person(models.Model):
    name = models.CharField(max_length=500)
    pers_type = models.ForeignKey(Person_Type)

    def __unicode__(self):
        return self.name

class Person_Type(models.Model):
    pers_type = models.CharField(max_length=40)

    def __unicode__(self):
        return self.pers_type

我正在尝试使用python manage.py shell向Person添加条目.

到目前为止,我尝试过:

import sqlite3
from trials.models import *

conn = sqlite3.connect('privy.db')
print Person #this returns 

但是这会返回一个错误:ValueError:无法指定“’Appellant’”:“Person.pers_type”必须是“Person_Type”实例.

字符串“Appellant”已经存储为“Person_Type.pers_type”表中的一个值.我需要更改什么来引用pers_type字段?

如果需要,很高兴提供更多细节.非常感谢你花时间陪伴.

最佳答案
Person.objects.create(name='Adam',person_type='Appellant') 

这里,作为person_type参数,create()方法期望获取person_type实例而不是string

所以只是这样:

pers_type = Person_Type.objects.get(pers_type='Appelant') # assuming pers_type is unique
Person.objects.create(name='Adam',pers_type=pers_type) 

或者,考虑到“上诉人”不在db中的情况:

try:
    pers_type = Person_Type.objects.get(pers_type='Appelant')
except Person_Type.DoesNotExists:
    person_type = Person_Type.objects.create(pers_type='Appellant')
Person.objects.create(name='Adam',pers_type=pers_type)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读