我是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)