标签:django admin 数据库 primary_key get() returned more than one topic -- it returned 2!
Django的后台功能非常实用:
首先需注册app到后台
cat asset/apps.py from __future__ import unicode_literals from django.apps import AppConfig class AssetConfig(AppConfig): name = ‘asset‘ verbose_name = ‘环境列表‘ # 后台显示的名称 cat asset/admin.py from django.contrib import admin from asset.models import Asset_pro, Asset_test, Redis_pro # Register your models here. admin.site.register([Asset_pro, Asset_test, Redis_pro])
登陆后台后,发现操作对象时报错:get() returned more than one topic -- it returned 2!
原因是数据库中插入了多条同样的数据,导致查询的时候不能区分需要获取哪一条数据
所以需要在models中定义:
class Asset_test(models.Model): nodes = models.CharField(max_length=20, verbose_name=u‘应用节点‘) applications = models.CharField(max_length=30, verbose_name=u‘应用名‘, primary_key=True) #后台app默认更改对象 ipaddr = models.CharField(max_length=20, verbose_name=u‘IP地址‘) #需定义primary_key,否则会自动创建id列 mobile = models.CharField(max_length=20, verbose_name=‘mobile‘) DMS = models.CharField(max_length=5, verbose_name=‘DMS‘) flag = models.CharField(max_length=5, verbose_name=‘flag‘) def __unicode__(self): return u"%s" %(self.ipaddr) class Meta: db_table = ‘fcenv_test‘ #表名,默认为app名+类名 verbose_name = u‘测试环境服务信息‘ verbose_name_plural = u‘测试环境资产管理‘
原则是必须要有一列数据是primary_key,然后后天操作数据时正常。
后台修改数据,前端实时展现。
本文出自 “创者思” 博客,请务必保留此出处http://strongit.blog.51cto.com/10020534/1845338
标签:django admin 数据库 primary_key get() returned more than one topic -- it returned 2!
原文地址:http://strongit.blog.51cto.com/10020534/1845338