python - Django:在 MySql 中自动分配主键失败

标签 python mysql django

我正在关注 Effective Django使用 MySql 而不是 sqlite3 的变化的教程。 关注official recommendation Django 并且考虑到我正在使用 Python3.4 我正在使用 mysqlclient司机。 我已经按照教程中的指示创建了以下模型:

class Contact(models.Model):

    fName = models.CharField(max_length = 30)
    lName = models.CharField(max_length = 100)
    eMail = models.EmailField()

    def str(self):
        return ' '.join([self.fName, self.lName])

db 已同步(迁移)正常。尽管如此,当通过 shell 创建联系人时

a = Contact('John', 'Doe')

然后保存

a.save()

我收到以下错误:

ValueError: invalid literal for int() with base 10: 'John'

当我提供一个显式整数(作为主键???)作为第一个参数时,它不会出现

a = Contact(1, 'John', 'Doe')

为什么自动 pk 分配不能正常工作?

我在 virtualenv 上使用 Django 1.7.7/Python 3.4 以下是设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'addressbook',
        'USER': 'abuser',
        'PASSWORD': '1234',
        'HOST': 'localhost',
        'PORT': '3306',
}

abuser 已被授予地址簿(以及 test_addressbook)db 上具有授予选项的所有权限

最佳答案

要创建模型实例,您应该使用关键字参数而不是位置参数:

a = Contact(fName='John', lName='Doe')
a.save()

关于python - Django:在 MySql 中自动分配主键失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29256226/

相关文章:

mysql - 关于 AWS/SQL 和 Django

python - 如何使用python在过去六个小时内获取文件夹中的最新文件更新

python - 获取当前函数参数的字典

python - 如何将小部件放入选项卡中以控制选项卡中的绘图

mysql - Docker 应用程序中的数据库

MySQL 结果排序不正确?在子查询中排序

python - 让 Django 识别 PIL JPEG 支持

python - 在 field_name 中指定反向关系时,GeoDjango GeoQuerySet.distance() 结果为 'ST_Distance output only available on GeometryFields'

python - Matplotlib 错误类型错误 : Cannot cast array data from dtype ('float64' ) to dtype ('<U32' ) according to the rule 'safe'

c# - 使用两列之一将表连接到其他表