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)

と picture_paper:

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 または空白にすることはできないため、削除しようとするとエラーが発生します。

on_deleteパラメータに関する Django のドキュメントを参照してください。おそらく、それを as に設定しPROTECTED、例外を適切に処理する必要があります。

于 2012-05-30T22:24:15.020 に答える