首先,在models中创建2张表
class Business(models.Model):
caption = models.CharField(max_length=32)
class Host2(models.Model):
nid = models.AutoField(primary_key=True)
hostname = models.CharField(max_length=32,db_index=True)
ip = models.GenericIPAddressField(protocol="ipv4",db_index=True)
port = models.IntegerField()
b = models.ForeignKey(to="Business", to_field='id')
business表
然后在views中给host2添加一张表
def app(request): obj2 = models.Host2.objects.create(nid=9,hostname='d1',ip="1.1.1.1",port=22,b_id=40) return HttpResponse('ok1')
如果,你默认将表创建在sqlite3中,那么你执行http://127.0.0.1:8000/app ,也会在host2中添加记录成功。查资料据说是sqlite的版本问题,要升级版本?
于是我试了下django将表创建在mysql中,执行http://127.0.0.1:8000/app,就不能创建了,有了约束作用。
。
好了,问题解决了,那以后就用mysql作为存储了。
python3的django配置。
在settings中将DATABASES替换掉。需要注意的是‘NAME’代指mysql中的database,需要你在自己手动先创建好
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'mysqldb', 'USER': 'root', 'PASSWORD': '×××', 'HOST': '[host_id]', 'PORT': '3306', }}
还有要在你的django的同名目录下的__init__.py文件中加上,因为py3用的都是pymysql了。2的换成mysqldb
import pymysqlpymysql.install_as_MySQLdb()