0

我有一个模型:

class picture(models.Model):
    name = models.CharField(null=False, blank=False, max_length=128)
    collections = models.ManyToManyField('collection', null=False, blank=False)
    sizes = models.ManyToManyField('picture_size', null=False, blank=False)
    papers = models.ManyToManyField('picture_paper', null=False, blank=False)
    base_price = models.DecimalField(decimal_places=2, null=False, blank=False, default=2000, max_digits=10)
    img_icon = models.FileField(blank=False, null=False, upload_to='pic_icons')
    img_large = models.FileField(blank=False, null=False, upload_to='pic_large')
    img_huge = models.FileField(blank=False, null=False, upload_to='pic_huge')
    is_active = models.BooleanField(blank=False, null=False, default=True)

和图片纸:

class picture_paper(models.Model):
    name = models.CharField(null=False, blank=False, max_length=128)
    price_per_ssm = models.DecimalField(null=False, blank=False, decimal_places=2, max_digits=10)
    is_active = models.BooleanField(null=False, blank=False, default=True)

我在管理员中注册了他们的模型,可以创建一个 picture_paper 但不能删除它:

(1054,“‘where 子句’中的未知列‘picture_paper_id’”)

它正在构建的 SQL 是这样的:

'DELETE FROM `core_picture_papers` WHERE `picture_paper_id` IN (%s)'

解释 core_picture_papers:

id  int(11) NO  PRI     auto_increment
picture_id  int(11) NO  MUL     
paper_id    int(11) NO  MUL 

我的模型设置是否完全错误(我正在尝试构建一个纸类字典并将它们与图片挂钩 - 图片可能与几种尺寸或一个等相关)?或者我缺少什么?

4

1 回答 1

0

我会说您正在尝试删除picture_paper与现有对象相关的picture对象。由于您的 M2M 不能为 Null 或 Blank,因此当您尝试删除它时会出现错误。

查看有关on_delete参数的 Django 文档。您可能需要将其设置为PROTECTED并正确处理异常。

于 2012-05-30T22:24:15.020 回答