*之后的add()参数必须是序列,而不是组

时间:2013-03-14 13:42:21

标签: django django-forms

我正在尝试使用importer-option中的django-adaptors将“群组”作为额外字段传递,但我收到以下错误...

*之后的

add()参数必须是序列,而不是组

ContactCSVModel.import_data(data=self.filepath, extra_fields="1")

这是我的CsvModel ......

CsvModel.py

class ContactCSVModel(CsvModel):

    first_name = CharField()
    last_name = CharField()
    company = CharField()
    mobile = CharField()
    groups = DjangoModelField(Group)

    class Meta:
        delimiter = "^"
        dbModel = Contact
        update = {
            'keys': ['mobile']
        }

model.py

class Contact(models.Model):
    """
    Stores all contacts.
    """
    first_name = models.CharField(max_length=60)
    last_name = models.CharField(max_length=60)
    company = models.CharField(max_length=100,blank=True)
    mobile = models.IntegerField(max_length=20)
    active = models.BooleanField(help_text="States if pet type is active/selectable.")
    modified = models.DateTimeField(null=True, auto_now=True, help_text="Shows when object was modified.")
    created = models.DateTimeField(auto_now_add=True, help_text="Shows when object was created.")

    #FK
    groups = models.ManyToManyField(Group, related_name='contacts')

看看git上的项目(如下),项目和很多2个字段可能有任何问题,如果有的话,如何修复?还是我的代码?

https://github.com/anthony-tresontani/django-adaptors/blob/master/adaptor/model.py#L436

1 个答案:

答案 0 :(得分:4)

目前django-adapters不支持ManyToManyFields。随着对它的要求越来越多,我将很快整合它。

如果您想解决这个问题,您应该分两步完成。 第一个是通过删除:

使用简单的CSVModel来创建python对象
dbModel = Contact

不幸的是,您还必须手动执行更新逻辑。

然后您需要通过执行以下操作显式创建django实例:

contact = Contact.objects.create(first_name = csv_object.first_name, ....)
contact.groups.add(csv_object.group)

希望有所帮助