Django-import-export: Импорт поля "многие ко многим

У меня есть модель "Веб-сайт", которая может иметь несколько категорий:

Model.py

class Website(models.Model):
    ...
    uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    category = models.ManyToManyField('Category', related_name='website_category')
    country = models.ForeignKey('Country', null=True, blank=False, on_delete=models.SET_NULL, related_name='website_country')
    language = models.ForeignKey('Language', null=True, blank=False, on_delete=models.SET_NULL, related_name='website_language')
    ...

Я готов импортировать несколько категорий, разделенных запятыми, для каждого сайта через xlsx файл.
Ниже приведен мой файл администратора:

Admin.py

class WebsiteResource(resources.ModelResource):
    category = fields.Field(
        column_name='category',
        attribute='category',
        widget=ManyToManyWidget(Category, ',', 'name'))

    country = fields.Field(
        column_name='country',
        attribute='country',
        widget=ForeignKeyWidget(Country, 'name'))

    language = fields.Field(
        column_name='language',
        attribute='language',
        widget=ForeignKeyWidget(Language, 'name'))

    def before_import_row(self, row, row_number=None, **kwargs):
        try:
            row['uuid'] = uuid.uuid4()
            row['cost_price'] = row['publication_price'] * (row['percentage']/100)
            row['url'] = clear_url(row['url'])
            row['outreached_by'] = get_outreached_by_details(kwargs['user'])
        except Exception as e:
            raise ValidationError(e)

 class Meta:
        model = Website
        import_id_fields = ['uuid']
        fields = (....)


class WebsiteAdmin(ImportMixin, admin.ModelAdmin):
    resource_class = WebsiteResource
    ....
    def get_import_formats(self):
        formats = (
            # base_formats.CSV,
            base_formats.XLSX,
        )
        return [f for f in formats if f().can_export()]

    class meta:
        model = Website

Все остальное работает нормально, но поскольку это поле категории является полем "многие ко многим", у меня возникает исключение при подтверждении импорта.
Исключение:

insert or update on table "GPFY_website_category" violates foreign key constraint "GPFY_website_category_website_id_32320ddd_fk_GPFY_website_uuid"
DETAIL:  Key (website_id)=(3ed6ae85-d309-4e7f-b2d9-5a74ddeb3b90) is not present in table "GPFY_website".

Возможно, это происходит потому, что когда запись сохраняется в таблице bridge (website_category) с определенным первичным ключом (uuid в данном случае), этого PK нет в таблице website, и поэтому ограничение внешнего ключа не работает.

Любое предложенное решение для этого будет высоко оценено.

Спасибо

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