0

models.py には...

class Siteinfo(models.Model):
    url = models.CharField(max_length=100)
    description = models.TextField()    

class Makesite(models.Model):
    sitename = models.CharField(max_length=100, unique = True) 
    siteinfo = models.ManyToManyField(Siteinfo)
    ref_id = models.ManyToManyField(RefID)
    def __unicode__(self):
        return u'%s' %(self.sitename)

description のインスタンスを削除して、別のインスタンスに置き換えようとしていますが、同じ URL に関連付けられていて、多対多のオブジェクトのままです。グループオン。

したがって、group1 はサイト名です。私が持っている関係を作成する

url = request.POST['url']
description = request.POST['description']

datsite = Makesite.objects.get(sitename=site)
datsite.siteinfo.add(Siteinfo.objects.create(url=url,description=description))

しかし、説明を削除してこのコードで置き換えようとすると、URLも削除されます。

name = Makesite.objects.get(sitename=site).siteinfo.values_list('description',flat=True)[0]
Makesite.objects.get(sitename=site).siteinfo.get(description=name).delete()

この問題を回避できるコードを書くことはできると思いますが、単に 1 つを削除してその場所に別のインスタンスを追加する方法を見つけたいと思います。

4

1 に答える 1

2

念のため、ユーザー入力の処理にはフォームを使用する必要があります。

ほぼ同じインスタンスを削除および追加するのではなく、インスタンスを更新したいようです。

site_info = Makesite.objects.get(sitename=site).siteinfo.get(description=name)
site_info.description = "new description"
site_info.save()

または、もっと簡単に:

site_info = Siteinfo.objects.get(makesite__sitename=site, description=name) # only 1 query
site_info.description = "new description"
site_info.save()
于 2012-06-29T02:43:12.863 に答える