我试图在Django中使用ManyToMany关系,几乎所有东西都完美无缺。我有资源和案例研究。目标是让(案例研究)能够从资源表中提取任意数量的项目。
这是完美无缺的
我不能
我有一个关系表来处理这种关系:
casestudy_resource (表格)
casestudy_id resource_id 1 2 1 5 1 9
Models.py
class Resource(models.Model):
title = models.CharField(max_length=200, null=False, blank=False)
date = models.DateTimeField(null=False, blank=False)
intro = models.CharField(max_length=1000, default=None, null=False, blank=True)
file = models.FileField(upload_to=pdf_location, null=True, blank=True)
def __unicode__(self):
return self.title
class Casestudy(models.Model):
title = models.CharField(max_length=400, null=False, blank=False)
meta_keywords = models.CharField(max_length=500, null=True, blank=True)
meta_description = models.CharField(max_length=500, null=True, blank=True)
thumbnail = models.ImageField(upload_to=image_location, null=True, blank=True, help_text="120w x 100h")
file = models.FileField(upload_to=pdf_location, null=True, blank=True)
resource = models.ManyToManyField(Resource, blank=True, null=True)
class Meta:
verbose_name = "Case Study"
verbose_name_plural = "Case Studies"
def __unicode__(self):
return self.title
PRIMARY KEY ISSUE
从上面的代码执行删除时,我收到以下数据库异常:
no such column: casestudy_resource.id
次要问题
添加主键以修复上述列时,主键列中仅显示空值。奇怪的是,它们不像Django模型中的所有其他主键一样自动生成:
casestudy_resource (表格)
id casestudy_id resource_id NULL 1 2 NULL 1 5 NULL 1 9
这在处理删除资源或案例研究时会导致以下异常:
'NoneType' object has no attribute 'resource'
答案 0 :(得分:0)
您可以使用以下内容填充新的id
列(仅限Postgres):
UPDATE casestudy_resource SET id = nextval(pg_get_serial_sequence('casestudy_resource','id'));
该列需要同时添加SERIAL
和PRIMARY KEY
:
ALTER TABLE casestudy_resource ADD COLUMN id SERIAL;
UPDATE casestudy_resource SET id = nextval(pg_get_serial_sequence('casestudy_resource','id'));
ALTER TABLE casestudy_resource ADD PRIMARY KEY (id);