has a relation with model <class '***'>, which has either not been installed or is abstract.

本文介绍了解决Django框架中多对多关系中间表引起的错误问题,通过正确配置外键关联,确保同步数据库时不会出现验证失败的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

projects.blacklist: 'pro_cont' has a relation with model <class 'projects.models.Project_pro_contract'>, which has either not been installed or is abstract.

关系:

一个多对多关系中间表:

class Project_pro_contract(models.Model):
    id            = models.AutoField('id',primary_key = True)
    project_id    = models.IntegerField('project_id')
    contract_id   = models.IntegerField('contract_id') 

    class Meta:
        #app_label = "blacklist"
        db_table = 'project_pro_contract'
        verbose_name = 'ManyToMany中间表'
        verbose_name_plural = verbose_name
        ordering = ['-id']


现在新建一个表blacklist直接关联project_pro_contract:

class Blacklist(models.Model):   
    id          = models.AutoField('id',primary_key = True)
    pro_cont     = models.ForeignKey('Project_pro_contract',db_column = 'pro_cont',null = False,verbose_name = '项目')
    blackin     = models.BooleanField('黑名', default=False,editable=False)
    is_black    = models.IntegerField('黑名',default = 0,editable =False)

    def __unicode__(self):
        return u'%s-%s-%s'%(self.pro_cont.project_id.proj_num,self.pro_cont.project_id.proj_name,self.pro_cont.project_id.invest)
    class Meta:
        #app_label = "blacklist"
        db_table = 'blacklist'
        verbose_name = '黑名单'
        verbose_name_plural = verbose_name
        ordering = ['pro_cont']
syncdb会报错:
CommandError: One or more models did not validate:
projects.blacklist: 'pro_cont' has a relation with model <class 'projects.models.Project_pro_contract'>, which has either not been installed or is abstract.

只要将两个model中注释的语句解除注释即可。

理由见 https://docs.djangoproject.com/en/dev/ref/models/options/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值