我在django中有以下两个模型类。如何在django中保存多对多模型
class Rule(models.Model):
name = models.CharField(max_length=50)
user = models.ForeignKey(User, related_name='rules', null=True, blank=True)
threshold = models.CharField(max_length=50, null=True, blank=True)
alert_value = models.CharField(max_length=50, null=True, blank=True)
is_internal = models.BooleanField(default=False)
def __unicode__(self):
return self.name
def to_json(self):
return {
'name': self.name,
'threshold': self.threshold,
'alert_value': self.alert_value
}
class Module(models.Model):
name = models.CharField(max_length=50)
description = models.TextField(null=True, blank=True)
is_internal = models.BooleanField(default=False)
rules = models.ManyToManyField(Rule)
def to_json(self):
return {
'name': self.name,
'description': self.description,
'rules': [r.to_json() for r in self.rules.all()]
}
def __unicode__(self):
return self.name
现在我有下面的代码保存其中暗含一个规则,我view.py对象
def create_module(request):
if request.method == 'POST':
module_name = request.POST.get('name')
module_description = request.POST.get('description')
rule_ids = request.POST.getlist('rule_id')
rules = None
for rule_id in rule_ids:
try:
rules = models.Rule.objects.filter(pk__in=rule_id)
except models.Rule.DoesNotExist:
pass
module = models.Module(name=module_name,
description=module_description,
rules=rules)
module.save()
我得到了正确的规则在这里,但保存时被调用,我得到一个Module对象错误
Exception Type: TypeError at /modules/create/ Exception Value: 'rules' is an invalid keyword argument for this function
当我要救的对象图如何克服这一点。
它工作正常,但是当我检索我得到一个空的规则列表? – station 2014-11-25 11:47:01
@ user567797确保你的''rule_ids''有一些id。 – doniyor 2014-11-25 11:48:22
是的,如果我打印出来它显示'[u'1',u'2']' – station 2014-11-25 13:02:06