1

djangoでManyToMany関係を削除するにはどうすればよいですか。どのようにm2mを削除し、次に写真を削除しますかこれは以下の私のモデルですありがとう

class Picture(models.Model):
    owner = models.ForeignKey(User,blank = True)
    caption = models.CharField(max_length=150, blank=True, null=True)
    image = ImageField(upload_to='images/',blank = True, null = True)

class Land(Properies):
    photo = models.ManyToManyField(Picture,blank=True,related_name='Land_Pictures',null = True)

私はそれをこのように削除しようとしました

checked_list = []
start = 1            
land_photos = sorted(list(land.photo.select_related()),reverse =True)
while start < 8:
    photo = 'photo%s' % start
    checked = form.cleaned_data[photo]
    if checked != None:
        checked_list.append(land_photos[start - 1])
        start += 1            
for a_foto in checked_list:
     land.photo.remove(a_foto)
     try:
         a_foto.remove_all_file()
         a_foto.delete()
     except OSError:
         pass

そして、私はこのようなエラーを受け取ります

Exception Type:     AssertionError
Exception Value:    
Picture object can't be deleted because its id attribute is set to None.
4

1 に答える 1

0

ドキュメンテーション:

>>> land.photo.remove(some_picture)

またはその逆で、提供されたrelated_name引数を使用します。

>>> picture.Land_Pictures.remove(some_land)

デフォルトでは、なしrelated_nameの場合は次のようになります。

>>> picture.land_set.remove(some_land)
于 2012-11-07T09:58:40.957 に答える