4

django-adaptors の importer -optionを使用して「グループ」を追加フィールドとして渡そうとしていますが、次のエラーが発生します...

* の後の add() 引数は、Group ではなくシーケンスでなければなりません

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 のプロジェクト (以下) を見ると、プロジェクトと many2many フィールドに問題がある可能性があります。それとも私のコードですか?

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

4

1 に答える 1

4

現在、django-adaptors は ManyToManyFields をサポートしていません。リクエストが増えてきたので、近日中に統合する予定です。

これを回避したい場合は、2 つのステップで作業する必要があります。最初のものは、単純な CSVModel を使用して、以下を削除して Python オブジェクトを作成することです。

dbModel = Contact

残念ながら、更新ロジックも手動で行う必要があります。

次に、次のようにして明示的に django インスタンスを作成する必要があります。

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

それが役立つことを願っています

于 2013-03-19T15:51:45.130 に答える