Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django中的未知整数错误_Python_Django - Fatal编程技术网

Python Django中的未知整数错误

Python Django中的未知整数错误,python,django,Python,Django,我有一个小项目,通过Django和Latex创建我的账单,直到今天为止,这两个项目一直运作良好。现在当我尝试添加另一个服装时,Django抛出 以下是相关的模型定义: class Kunde(models.Model): name = models.CharField('Name', max_length = 200) vorname = models.CharField('Vorname', max_length = 200) geburtsdatum = model

我有一个小项目,通过Django和Latex创建我的账单,直到今天为止,这两个项目一直运作良好。现在当我尝试添加另一个服装时,Django抛出

以下是相关的模型定义:

class Kunde(models.Model):
    name = models.CharField('Name', max_length = 200)
    vorname = models.CharField('Vorname', max_length = 200)
    geburtsdatum = models.DateField('Geburtsdatum', max_length = 200)
    untersuchungsdatum = models.DateField('Untersuchungsdatum', max_length = 200)

    class Meta:
        abstract = True

class KundeArbeitsamt(Kunde):
    kundennummer = models.CharField('Kundennummer', max_length = 100)
    bglnummer = models.CharField('BGL-Nummer', max_length = 100)
    empfaenger = models.ForeignKey('rechnungen.NumberToEmpfaenger', blank = True, null = True)

    class Meta:
        verbose_name = "Proband Arbeitsamt"
        verbose_name_plural = "Proband Arbeitsamt"

    def __str__(self):
        return '{}, {}'.format(self.name, self.vorname)
创建对象的管理部分没有什么特别的,我想:

from django.contrib import admin
from .models import KundeArbeitsamt

class KundeArbeitsamtAdmin(admin.ModelAdmin):
    ordering = ('name',)

admin.site.register(KundeArbeitsamt, KundeArbeitsamtAdmin)

我发誓,我没有对Postgres数据库进行任何迁移或其他更改。Django正在处理对象的创建。是什么导致此错误以及如何修复此错误?

此错误由数据库引发,因为django希望添加一个ID为4的新列,该列已在使用中

要进一步调查,您需要找到应用程序中负责创建ID的部分。Django通常将此任务委托给您的数据库。如果是postgres,则使用数据类型。Postgres为此使用所谓的序列,并为您生成和执行以下SQL:

CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
    colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
);
ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;
现在,我首先检查数据库的健全性,如下所示:

-- views contents of the table
SELECT * FROM kunden_kundearbeitsamt;
-- check the sequence
select currval('kunden_kundearbeitsamt_id_seq');
如果第一个显示4条ID为1、2、3和4的记录,并且序列回答为4,则一切正常。我将继续使用django源代码,以了解为什么它们在创建对象时传递ID而不依赖于序列。在这种情况下,django shell可能是一个很好的起点

否则,我会修正顺序,问自己这是怎么发生的,因为这几乎不是博士后在这一点上犯错误的情况

SELECT setval('kunden_kundearbeitsamt_id_seq', (SELECT max(id) FROM kunden_kundearbeitsamt));

哪个数据库在后面?创建对象的代码是什么?你是手动设置id还是让Django处理这个问题?@kichik:Django,更新了这个问题。这就是模型的全部代码。我会先查看表格,找出内容,然后找出django想要设置一个已经使用的ID的原因。在postgres上,检查相应的序列以获得下一个值。你能包括使用模型创建对象的代码吗?太棒了,谢谢你的背景资料。我最终使用了SELECT setval'kunden_kundearbeitsamt_id_seq',从kunden_kundearbeitsamt选择maxid;更改序列值。我已将您的解决方案添加到答案中。我记得通过Postco插入的条目可能导致了错误。再次感谢你的回答,继续努力!
SELECT setval('kunden_kundearbeitsamt_id_seq', (SELECT max(id) FROM kunden_kundearbeitsamt));