鱼C论坛

 找回密码
 立即注册
查看: 2208|回复: 11

[已解决]Model app.Usero can\'t have more than one auto-generated field.

[复制链接]
发表于 2023-4-13 18:03:28 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 tengke 于 2023-4-13 18:09 编辑

$]ESOE7WW5X{`@)YCYXMYUU.png

报错是这个Model app.Usero can't have more than one auto-generated field.
我想保留这个需要怎么做呢
    xb=(
        (1,"男"),
        (2,"女"))
    gen= models.SmallAutoField(verbose_name="xb" ,choices="xb")



1681380531871.jpg
最佳答案
2023-4-13 18:03:29
这个错误是因为在Django中,每个模型只允许有一个自动生成的主键。

SmallAutoField是一个自动生成的整数字段,所以当你在同一个模型中使用多个SmallAutoField时,就会出现这个错误。

如果你想保留性别字段并使用选项,你可以使用IntegerField代替SmallAutoField。

这里是修改后的代码:
class Usero(models.Model):
    GENDER_CHOICES = (
        (1, "男"),
        (2, "女"),
    )
    gen = models.IntegerField(verbose_name="性别", choices=GENDER_CHOICES)

这样,gen字段将成为一个普通的整数字段,可以存储性别选项。当你在创建或更新Usero对象时,可以使用GENDER_CHOICES中定义的整数值来设置性别。

最佳答案

查看完整内容

这个错误是因为在Django中,每个模型只允许有一个自动生成的主键。 SmallAutoField是一个自动生成的整数字段,所以当你在同一个模型中使用多个SmallAutoField时,就会出现这个错误。 如果你想保留性别字段并使用选项,你可以使用IntegerField代替SmallAutoField。 这里是修改后的代码: 这样,gen字段将成为一个普通的整数字段,可以存储性别选项。当你在创建或更新Usero对象时,可以使用GENDER_CHOICES中定义的整 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-13 18:03:29 | 显示全部楼层    本楼为最佳答案   
这个错误是因为在Django中,每个模型只允许有一个自动生成的主键。

SmallAutoField是一个自动生成的整数字段,所以当你在同一个模型中使用多个SmallAutoField时,就会出现这个错误。

如果你想保留性别字段并使用选项,你可以使用IntegerField代替SmallAutoField。

这里是修改后的代码:
class Usero(models.Model):
    GENDER_CHOICES = (
        (1, "男"),
        (2, "女"),
    )
    gen = models.IntegerField(verbose_name="性别", choices=GENDER_CHOICES)

这样,gen字段将成为一个普通的整数字段,可以存储性别选项。当你在创建或更新Usero对象时,可以使用GENDER_CHOICES中定义的整数值来设置性别。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-13 18:05:02 | 显示全部楼层
本帖最后由 sfqxx 于 2023-4-13 18:07 编辑

根据您提供的错误,您正在尝试为 `app.Usero` 模型创建多个自动生成的字段。这是不允许的,因为每个模型只能有一个自动生成的主键字段。

从您提供的代码中,我看到您正在尝试将 `gen` 字段设置为自动生成的字段。但是,该字段是一个 `SmallAutoField` 类型,并且似乎已经定义了一个 `choices` 参数。如果您想将此字段设置为选择字段,则应将 `choices` 参数传递给构造函数,而不是将其值设置为 `"xb"`。

以下是如何更正此问题的示例代码:
xb = (
    (1, "男"),
    (2, "女")
)
gen = models.SmallIntegerField(verbose_name="性别", choices=xb)

在此示例中,我使用 `SmallIntegerField` 而不是 `SmallAutoField` 来表示性别字段。然后,我将 `choices` 参数设置为 `xb`,这将告诉 Django 此字段应该是一个选择字段,并且选项应该是 `(1, "男")` 和 `(2, "女")`。

请注意,上述代码仅显示如何解决报错。如果您希望为 `app.Usero` 模型保留自动生成的主键字段,则需要删除其他自动生成的字段并确保每个模型仅有一个自动生成的主键字段。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-13 18:05:43 | 显示全部楼层


我去,你又占楼,我占楼就有人说我灌水,什么世道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-13 18:07:55 | 显示全部楼层
isdkz 发表于 2023-4-13 18:05
我去,你又占楼,我占楼就有人说我灌水,什么世道

你都那么多最佳了,在意这个吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-13 18:10:14 | 显示全部楼层
isdkz 发表于 2023-4-13 18:05
这个错误是因为在Django中,每个模型只允许有一个自动生成的主键。

SmallAutoField是一个自动生成的整数 ...

那我上面视频上的数据库设置可以正常使用呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-13 18:10:25 | 显示全部楼层
sfqxx 发表于 2023-4-13 18:07
你都那么多最佳了,在意这个吗

我就差那一点点就冲上首页了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-13 18:11:19 | 显示全部楼层
isdkz 发表于 2023-4-13 18:05
这个错误是因为在Django中,每个模型只允许有一个自动生成的主键。

SmallAutoField是一个自动生成的整数 ...

那为什么我上传的 视频里面的数据库设置是可以正常运行的呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-13 18:12:35 | 显示全部楼层
tengke 发表于 2023-4-13 18:11
那为什么我上传的 视频里面的数据库设置是可以正常运行的呢

第一张图是视频,第二张图是你自己敲的对吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-13 18:15:01 | 显示全部楼层
isdkz 发表于 2023-4-13 18:12
第一张图是视频,第二张图是你自己敲的对吧?

第一个是我敲的  第二个是视频
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-13 18:15:58 | 显示全部楼层
tengke 发表于 2023-4-13 18:15
第一个是我敲的  第二个是视频

第二张图中用的是 SmallIntegerField ,不是 SmallAutoField 呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-13 18:26:30 From FishC Mobile | 显示全部楼层
isdkz 发表于 2023-4-13 18:10
我就差那一点点就冲上首页了

啊啊啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 19:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表