如何解决Django中与外键有关的DeleteView问题? [英] How can solve a DeleteView problem in Django concerning a foreign key?

查看:28
本文介绍了如何解决Django中与外键有关的DeleteView问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须使用应用程序(DMS和ObjPDW).第一个是用于管理某些文件.在这里,我有一个模型DMS_Dokument,其中包括FileField等.最近,我在后一个应用程序(ObjPDW)中添加了新模型,并在Dokument_DMS中添加了外键:

  Zahlungsstrom类(models.Model):zahlung_bezeichnung = models.CharField(max_length = 550,blank = False,null = False,verbose_name ="Bezeichnung")zahlung_betrag = models.DecimalField(max_digits = 7,decimal_places = 2,default = None,blank = True,null = True)zahlung_dok_fk =模型.ForeignKey(dmsdok.DMS_Dokument,on_delete =模型.SET_DEFAULT,默认值=无,null =真,空白=真,verbose_name ="Zahlungsdokument") 

现在我想删除DMS_Dokument对象(使用DeleteView CBV),但是它给了我一个"prorammingerror":(1146,表'DB_DMS.ObjPDW_zahlungsstrom'不存在"))/p>

我不知道问题是什么.:(

只是为了清楚起见.这两个应用程序都有自己的数据库.我知道Django不建议在两个数据库之间建立模型关联,但是由于我不是一位经验丰富的程序员,所以我不知道为什么我可以使这种关系起作用,但是删除是一个问题.

此外,我想在此处包括更多有关DMS_Dokument模型的代码.它还具有删除定义.

  class DMS_Dokument(models.Model):dms_dok_titel = models.CharField(max_length = 255,blank = True)dms_dok_beschreibung = models.CharField(max_length = 3000,blank = True,null = True)dms_dok_datei = models.FileField(max_length = 255,upload_to ='DMS/')dms_dok_gehoert_zu_app = models.CharField(max_length = 255,choices = app_choices,blank = False,null = False)def save(self,* args,** kwargs):reserve_ext =扩展名(self.dms_dok_datei.name)neuer_dateiname = self.dms_dok_gehoert_zu_app +'_'+ self.dms_dok_titel +'_'+ self.dms_dok_hochgeladen_am.strftime(%d.%m.%Y")self.dms_dok_datei.name = neuer_dateiname + prepare_ext超级(DMS_Dokument,self).save(* args,** kwargs)def delete(self):self.indexes.all().delete()超级(DMS_Dokument,self).delete() 

也许有帮助.

解决方案

该错误表明该表不存在.您必须发出以下命令来创建迁移并在数据库中创建表:

  python manage.py makemigrationspython manage.py迁移 

I have to apps (DMS and ObjPDW). The first one is for managing some files. In this I have a model DMS_Dokument, which includes a FileField and some more. Recently I added a new model to the latter app (ObjPDW) and I included a foreign key to Dokument_DMS:

class Zahlungsstrom(models.Model):
    zahlung_bezeichnung = models.CharField(max_length=550, blank=False, null=False, verbose_name="Bezeichnung")
    zahlung_betrag = models.DecimalField(max_digits=7, decimal_places=2, default=None, blank=True, null=True)
      zahlung_dok_fk = models.ForeignKey(dmsdok.DMS_Dokument, on_delete=models.SET_DEFAULT, default=None, null=True, blank=True, verbose_name="Zahlungsdokument")

Now I wanted to delete a DMS_Dokument object (using the DeleteView CBV), but it gives me a "prorammingerror": "(1146, "Table 'DB_DMS.ObjPDW_zahlungsstrom' doesn't exist")"

I have no clue what the problem is. :(

Edit: Just to be clear on this. Both apps have their own databases. I know that Django is not recommending to relate models between two databases, but as I am no experienced programmer I do not know why I can make the relations work, but deletion is such a problem.

Furthermore I want to include some more code here, which is about the DMS_Dokument model. It also has a delete def.

class DMS_Dokument(models.Model):
    dms_dok_titel = models.CharField(max_length=255, blank=True)
    dms_dok_beschreibung = models.CharField(max_length=3000, blank=True, null=True)
    dms_dok_datei = models.FileField(max_length=255,upload_to='DMS/')
    dms_dok_gehoert_zu_app = models.CharField(max_length=255, choices=app_choices, blank=False, null=False)

    def save(self, *args, **kwargs):
        preserve_ext = extension(self.dms_dok_datei.name)
        neuer_dateiname = self.dms_dok_gehoert_zu_app + '_' + self.dms_dok_titel + '_' + self.dms_dok_hochgeladen_am.strftime("%d.%m.%Y")
        self.dms_dok_datei.name = neuer_dateiname + preserve_ext
        super(DMS_Dokument, self).save(*args, **kwargs)

    def delete(self):
        self.indexes.all().delete()
        super(DMS_Dokument, self).delete()

Perhaps this helps.

解决方案

The error says the table does not exist. You must issue the following commands to create the migrations and make the table in you DB:

python manage.py makemigrations
python manage.py migrate

这篇关于如何解决Django中与外键有关的DeleteView问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆