抱歉我的英文。我花了2天但不明白为什么我有错误:
FOREIGN KEY constraint failed
我使用python 2.7
一切正常,然后我更新到python 3.5.2
,现在当我尝试删除时,我有这个错误。我有以下模型:
class Auction(models.Model):
sealers = models.ForeignKey(User, related_name="sealers", on_delete=models.CASCADE)
buyer = models.ManyToManyField(User, related_name='buyer')
product_in_auction = models.ForeignKey(Product, related_name='product_in_auction', null=True, blank=True, on_delete=models.CASCADE)
name_auction = models.CharField(max_length=64, blank=False, null=False)
description = models.TextField(blank=True, null=True, default=None)
conf_propose = models.OneToOneField('Propose', null=True, blank=True, related_name='confirm_proposition', on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True, auto_now=False)
updated_at = models.DateTimeField(auto_now_add=False, auto_now=True)
class Meta:
verbose_name = 'Auction'
verbose_name_plural = 'Auctions'
def __str__(self):
return "%s" % (self.name_auction)
class Propose(models.Model):
buyer = models.ForeignKey(User, related_name="propositions_of_auction", on_delete=models.CASCADE, null=True, blank=True)
auction = models.ForeignKey(Auction, related_name="propositions_of_auction", on_delete=models.CASCADE)
bit = models.DecimalField(max_digits=10, decimal_places=2, default=0, blank=True)
created_at = models.DateTimeField(auto_now_add=True, auto_now=False)
updated_at = models.DateTimeField(auto_now_add=False, auto_now=True)
class Meta:
verbose_name = 'Proposition of the auction'
verbose_name_plural = 'Propositions of the auction'
def __str__(self):
return "%s" % (self.bit)
当我尝试删除一些auction
我有错误
FOREIGN KEY constraint failed
答案 0 :(得分:0)
我认为问题不在于python版本。就像错误说的那样,你有外键约束。因此,在您的Propose模型中,您有一个名为auction的字段,它是模型Auction的ForeignKey,因此如果您想删除某些拍卖实例,它也会影响表中的数据。
答案 1 :(得分:0)
每次我想使用管理来更改某些内容时,都会遇到此错误。我很幸运没有大型数据库。因此,我只是删除了所有迁移(除了__init__.py
)和数据库,然后再次使用manage.py makemigrations
和manage.py migrate
进行了迁移。
这种简单的方法对我有用!