Django在其他表格中看不到fk

时间:2019-03-04 05:00:51

标签: python django django-models

我有一些模型,然后在其他模型上使用。

models.py

class ElementMessages(models.Model)
    element = models.ForeignKey(Element, on_delete=models.CASCADE)
    sender = models.ForeignKey(UserAccount, on_delete=models.SET_NULL, null=True)
    text = models.TextField(max_length=512, null=True)
    send_time = models.DateTimeField(auto_now_add=True)
    type = models.CharField(max_length=16, choices=MESSAGE_TYPES, default=SIMPLE)
    type_dialog = models.CharField(max_length=10, choices=DIALOG_TYPE, default=DIALOG_TALK)
    request = models.ForeignKey(ChatRequest, null=True, default=None, on_delete=models.CASCADE)
    post_work = models.ForeignKey(PostWork, null=True, default=None, on_delete=models.CASCADE)
    files = models.BooleanField(default=False)

class Element(models.Model):
    id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True, primary_key=True)
    artist = models.ForeignKey(Artist, on_delete=models.CASCADE, related_name='chat_element', null=True, blank=True)
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE, related_name='chat_element', null=True, blank=True)
    element = models.ForeignKey('projects.Element', null=False, on_delete=models.CASCADE, related_name='chat_element')

当我尝试删除Element对象时,会引发以下问题:

django.db.utils.IntegrityError: insert or update on table "chat_elementmessages" violates foreign key constraint "chat_elementmessages_element_id_672e2ba2_fk_chat_element_id"
DETAIL:  Key (element_id)=(87cdd8d7-47f0-4264-8aa7-ae21a8246fd8) is not present in table "chat_element".

但是当我查看db中的表时,此键存在。 该如何解决?

1 个答案:

答案 0 :(得分:0)

事实证明,问题出在Django pre_deletepost_delete信号上。他们试图引用一个不存在的对象,但我试图将其删除。通过简单检查对象的存在进行修复。