ERROR: дублирующее значение ключа нарушает уникальное ограничение уже существует

У меня есть приложение Django для обслуживания заказов, продуктов и т.д. Один заказ может иметь множество OrderDetails, которые обозначают продукты, связанные с заказом. Однако когда я пытаюсь добавить новый экземпляр OrderDetails aka присвоить продукт заказу, я получаю эту ошибку. База данных говорит, что такая строка уже существует"(order_id, product_id)=(11076, 1)", что не соответствует действительности, если использовать запрос select к этой таблице. Order_id - это поле One to one, а product_id - ForeignKey в моделях django, если это имеет значение. "(order_id, product_id)=(11076, 1)" - Это составной первичный ключ. Здесь не используется последовательность или последовательность. Если нужно, вот некоторый код

class OrderDetails(models.Model):
    order = models.OneToOneField('Orders', models.DO_NOTHING, primary_key=True)
    product = models.ForeignKey('products.Products', models.DO_NOTHING)
    unit_price = models.FloatField()
    quantity = models.SmallIntegerField()
    discount = models.FloatField()

    class Meta:
        managed = False
        db_table = 'order_details'
        unique_together = (('order', 'product'),)

    def get_absolute_url(self):
        return u'/orders/%d' % self.order.pk

class OrderDetailsCreateView(LoginRequiredMixin, CreateView):
    model = OrderDetails
    template_name = 'orders/orderdetails_create.html'
    form_class = OrderDetailCreateOrUpdateForm

    def get_form_kwargs(self, **kwargs):
        form_kwargs = super(OrderDetailsCreateView, self).get_form_kwargs(**kwargs)
        emp = get_current_users_employee(self.request.user)
        last_order = Orders.objects.filter(employee=emp, id=self.kwargs['pk'])[0]
        last_order_details = OrderDetails.objects.filter(order=last_order).values('product_id')
        already_selected_products = last_order_details
        form_kwargs['already_selected_products'] = already_selected_products
        return form_kwargs

    def form_valid(self, form):
        form.instance.order = Orders.objects.filter(employee=get_current_users_employee(self.request.user)).latest('id')
        return super(OrderDetailsCreateView, self).form_valid(form)

Вот скрипт создания таблицы order_details:

CREATE TABLE IF NOT EXISTS public.order_details
(
    order_id smallint NOT NULL,
    product_id smallint NOT NULL,
    unit_price real NOT NULL,
    quantity smallint NOT NULL,
    discount real NOT NULL,
    CONSTRAINT pk_order_details PRIMARY KEY (order_id, product_id),
    CONSTRAINT fk_order_details_orders FOREIGN KEY (order_id)
        REFERENCES public.orders (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION,
    CONSTRAINT fk_order_details_products FOREIGN KEY (product_id)
        REFERENCES public.products (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
)
Вернуться на верх