Django импорт экспорт - ManyToManyfield

У меня есть поле ManyToMany в моих моделях.

Я хочу импортировать данные и ввести их в это поле.

Мой Resources.py:-

class ClinicResource(resources.ModelResource):
language = fields.Field(column_name='language',attribute='language', widget=ForeignKeyWidget(Language, 'code'))
country = fields.Field(column_name='country',attribute='country', widget=ClinicCountryForeignKeyWidget(model = Country, field ='name'))
clinic_languages = fields.Field(widget=ManyToManyWidget(ClinicLanguages, field='name'))

class Meta:
    model = Clinic
    fields = ('code', 'name', 'city', 'score')
    exclude = ('id',)
    import_id_fields = ('code', 'name', 'city', 'score', 'language', 'country')

my Models.py:-

class Clinic(models.Model):
    code = models.CharField(max_length= 10, blank= False, null= False)
    name = models.CharField(max_length= 256, blank= False, null= False)
    slug = models.SlugField(null= True, blank= True)
    # country = models.CharField(max_length= 256, blank= False, null= False)
    city = models.CharField(max_length= 256, blank= False, null= False)
    country = models.ForeignKey(Country, on_delete=models.CASCADE, related_name='allcliniccountry', blank= True, null=True)
    score = models.FloatField(blank= False, null= False, default= 2, validators=[MinValueValidator(min), MaxValueValidator(max)])
    language = models.ForeignKey(Language, on_delete=models.CASCADE, related_name='allclinicslanguage', blank= True)
    # about = models.TextField(blank= True, null= True)
    clinic_languages = models.ManyToManyField(ClinicLanguages, related_name='clinic_language', blank= True)

    about = tinymce_models.HTMLField(blank= True, null= True)
    created= models.DateTimeField(auto_now=True)
    status = models.CharField(max_length= 30, choices= SIZE_CHOICES, default= 'pending', blank= False, null= False)

ЗАМЕТЬТЕ поле clinic_languages, это то, что я хочу импортировать

Вы можете увидеть, как работает ManyToManyWidget в django-import-export source.

Вы правильно определили свое поле:

clinic_languages = fields.Field(widget=ManyToManyWidget(ClinicLanguages, field='name'))

Это означает, что код поиска будет пытаться загрузить связанные экземпляры, используя поле 'name'. По умолчанию они должны быть разделены ',' в вашем файле импорта, например:

clinic_languages
name1,name2,name3

При необходимости вы можете переопределить разделитель.

Вернуться на верх