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
При необходимости вы можете переопределить разделитель.