Django:我无法让 Django 自动创建自动字段

Posted

技术标签:

【中文标题】Django:我无法让 Django 自动创建自动字段【英文标题】:Django: I am unable to get Django to autocreate an autofield 【发布时间】:2022-01-06 00:09:00 【问题描述】:

我从views.py 调用BORROWER.objects.create(ssn=Ssn, bname=Name, address=Address, phone=Phone) 在我的sqlite 数据库中创建一个条目。这是我的models.py文件,里面有相关的功能。

class BORROWER(models.Model):
card_id = models.AutoField(primary_key=True, max_length=7)
ssn = models.CharField(max_length=11)
bname = models.CharField(max_length=71)
address = models.CharField(max_length=79)
phone = models.CharField(max_length=15)
def __str__(self):
    return str(self.card_id)

数据库条目已成功创建。但是,由于我没有为 card_id 字段指定值,因此该值保持为 (<django.db.models.fields.AutoField>,) 而不是实际的键。当我尝试为card_id 指定一个值时,它说明了一些关于意外参数的内容。我是否错误地调用了 create 函数?

编辑:原始代码中没有逗号,但我会尝试建议的编辑

【问题讨论】:

您在该行的末尾有一个尾随逗号,它将AutoField 包装在一个单例元组中。 对不起,原代码中没有逗号,我在没有逗号的情况下进行了测试,问题仍然存在。我会再试一次以确保。 【参考方案1】:

删除card_id 末尾的逗号,不要将max_lengthAutoFiled 一起使用..

class BORROWER(models.Model):
card_id = models.AutoField(primary_key=True)
ssn = models.CharField(max_length=11)
bname = models.CharField(max_length=71)
address = models.CharField(max_length=79)
phone = models.CharField(max_length=15)
def __str__(self):
    return str(self.card_id)

【讨论】:

谢谢,删除 max_length 似乎已经解决了!

以上是关于Django:我无法让 Django 自动创建自动字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中自动生成 URL

使用 Django 和 Elasticsearch 索引新对象

如何在django上自动创建createuperuser

前端Vue+后端Django项目创建以及自动部署流程

前端Vue+后端Django项目创建以及自动部署流程

如何自动创建 Django 应用程序备份