class Profile(models.Model):
name=models.CharField(max_length=20, primary_key=True )
age=models.IntegerField()
def __str__(self):
return self.name
class Like(models.Model):
user=models.ForeignKey(Profile,on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
like=models.IntegerField(default=0)
def __str__(self):
return self.choice_text
在python manage.py shell 命令中:
from database.models import Profile, Like
p=Profile(name='test', age=66)
p.save()
p.id
AttributeError Traceback (most recent call last)
<ipython-input-35-25ec00f2e4bf> in <module>
----> 1 p.id
但是如果你按照www.example.com上的例子www.djangoproject.com,你会看到www.example.com的结果p.id是1。
任何帮助将不胜感激,以了解数据库,因为我从来没有工作过的数据库。
2条答案
按热度按时间tkclm6bt1#
您的模型具有
primary_key
字段name
。因此,如果您保存()您的模型,它将不会有一个名为
id
的字段,因为这是一个默认的primary_key
-字段,如果您没有定义任何字段。您可以通过
obj.pk
(或您的情况下的obj.name
)访问primary_key
。5cg8jx4n2#
当数据库中的主键不被称为“id”时,也会出现此消息
必须由用户来命名主键(特别是当数据库较旧时)
以下模型定义出错
第一个月
以下模型定义更正错误,数据库主键不变
id = models.AutoField(primary_key=True,db_column='examination_id')
注意django对“id”很满意,mysql对任何主键的命名都是免费的。