我正在尝试使用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
答案 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)
希望有所帮助