Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django使用通用视图保存多对多条目_Django_Django Views - Fatal编程技术网

Django使用通用视图保存多对多条目

Django使用通用视图保存多对多条目,django,django-views,Django,Django Views,我有一个django模型,具有多对多字段,如下所示: class Sponsor(CommonInfo, Person): signature_code = models.CharField(max_length=20, blank=True) account = models.ForeignKey(Account) department = models.ForeignKey(Department) product = models.ManyToManyFiel

我有一个django模型,具有多对多字段,如下所示:

class Sponsor(CommonInfo, Person):
    signature_code = models.CharField(max_length=20, blank=True)
    account = models.ForeignKey(Account)
    department = models.ForeignKey(Department)
    product = models.ManyToManyField(Product, null=True, blank=True, through = 'ProductSponsor')
    accounts = models.ManyToManyField(Account, null=True, blank=True, through = 'AccountSponsor', related_name='sponsoraccounts')
我的看法是:

class SponsorEdit(UpdateView):
    model = Sponsor
    template_name = 'sponsoredit.html'
    fields = ('account', 'department', 'exp_date', 'last_name', 'first_name', 'signature_code', 'comments', 'product', 'accounts')
通过在多对多关系中添加一些字段来编辑条目时,出现以下错误:

AttributeError at /irms/sponsoredit/2
Cannot set values on a ManyToManyField which specifies an intermediary model.  Use irms.ProductSponsor's Manager instead.

问题出在哪里?

在您的模型中,您使用的是
accountshandor
productshandor
。它们是关系的自定义中间表,当保存
赞助商
对象时,需要手动设置中间'
产品赞助商
'和'
账户赞助商
'对象。比如:

ProductSponsor.objects.create(sponsor=SponsorObject, product=ProductObject)
AccountSponsor.objects.create(sponsor=SponsorObject, account=AccountObject)