我有一个小项目,通过Django
和Latex
来创建我的账单,直到今天,这两个项目都工作得非常完美。现在,当我尝试添加另一个客户时,Django
抛出
duplicate key value violates unique constraint "kunden_kundearbeitsamt_pkey"
DETAIL: Key (id)=(4) already exists.
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:
我现在开始检查数据库的健全性,如下所示:
如果第一个显示4条记录,ID为1、2、3和4,并且序列的答案为4,则一切正常。我将继续使用django源代码来找出为什么它们在不依赖序列的情况下在创建对象时传递ID。在这种情况下,django shell可能是一个很好的起点。你知道吗
否则我会修正顺序,问自己这是怎么发生的,因为这几乎不是postgres在这一点上犯错误的情况。你知道吗
相关问题 更多 >
编程相关推荐