Ключ не присутствует в таблице django
Сразу скажу, я просмотрел все подобные вопросы, но я could not solve my problem
. Поэтому и спрашиваю. Изначально я создал таблицы Products
, FeaturesForProduct
, ProductFeatures
в postgres
. Теперь мне нужно перенести эти таблицы в django
. Я использовал команду python manage.py inspectdb
. Я сам определил отношения many to many
. Я также написал небольшую функцию, при вызове которой я получаю ошибку:
django.db.utils.IntegrityError: insert or update on table "product_features" violates foreign key constraint "fk_products_product_features_refer"
DETAIL: Key (id)=(1) is not present in table "products".
Я понимаю, в чем причина этой ошибки. В последний раз, когда я с ней столкнулся, я просто удалил базу данных, после чего все заработало. Меня интересует следующий вопрос, is it possible to somehow get rid of this error in another way?
My func:
class AttachNewFeatureToProduct(View):
def get(self, request, *args, **kwargs):
if request.user.is_superuser:
res_string = ""
product = Products.objects.get(id=int(request.GET.get('product_id')))
existing_features = list(set([item.feature.feature_name for item in product.features.all()]))
category_features = SparePartsUnitsFeatures.objects.filter(
spare_parts_units=product.spare_parts_unit
).exclude(feature_name__in=existing_features)
option = '<option value="{value}">{option_name}</option>'
html_select = """
<select class="form-select" name="product-category-features" id="product-category-features-id" aria-label="Default select example">
<option selected>---</option>
{result}
</select>
"""
for item in category_features:
res_string += option.format(value=item.spare_parts_units.id, option_name=item.feature_name)
html_select = html_select.format(result=res_string)
return JsonResponse({"features": html_select})
else:
return HttpResponseRedirect('/')
Мои модели:
class Products(models.Model):
id = models.BigAutoField(primary_key=True)
category = models.ForeignKey(Categories, models.DO_NOTHING, db_column='category', blank=True, null=True, verbose_name = 'Категория')
spare_parts_unit = models.ForeignKey('SparePartsUnits', models.DO_NOTHING, db_column='spare_parts_unit', blank=True, null=True, verbose_name = 'Подкатегория')
...
features = models.ManyToManyField("specs.ProductFeatures", blank=True, through='FeaturesForProduct')
class Meta:
managed = False
db_table = 'products'
...
...
class ProductFeatures(models.Model):
id = models.BigAutoField(primary_key=True)
...
product = models.ForeignKey('catalog.Products', models.DO_NOTHING, db_column='product', blank=True, null=True, verbose_name='Товар')
feature = models.ForeignKey(SparePartsUnitsFeatures, models.DO_NOTHING, db_column='feature', blank=True, null=True, verbose_name='Характеристика')
class Meta:
managed = False
db_table = 'product_features'
...