Обновление django с использованием имени вошедшего пользователя в качестве pk

Сделал меню методом table и post с информацией о зарегистрированном пользователе. Я хочу обновлять информацию, используя имя пользователя. Если в таблице нет выхода имени пользователя как залогиненного пользователя, он публикует данные, но если имя пользователя уже вышло, я хочу, чтобы он перезаписал данные. Пока что он не перезаписывает, а просто публикует. Что я могу сделать, чтобы исправить это?

model.py

class OrderItem(models.Model):

    username = models.CharField('Username', max_length=20, null=True, blank=True)
    first_name = models.CharField('First Name', max_length=30, null=True, blank=True)
    last_name = models.CharField('Last Name', max_length=30, null=True, blank=True)
    vendor_name = models.ForeignKey(Vendor, on_delete=models.SET_NULL, null=True)
    menu_name = models.ForeignKey(Menu, on_delete=models.SET_NULL, null=True)
    note = models.CharField('note', max_length=255, null=True, blank=True)

view.py

def UpdateOrderView(request, pk):
    username = user.is_authenticated
    order = OrderItem.objects.get(username=username)
    form1 = OrderForm()

    context = {'form1': form1 }

    if request.method == 'POST':
        form1 = OrderForm(request.POST, instance=order)
        print(request.POST)
        if form1.is_valid():
            form1.save()

            return redirect('order-update', pk=pk)
    return render(request, '/order_info.html', context)

urls.py

urlpatterns = [
    path("order_info", views.OrderView, name="order-page"),
    path("<int:pk>", views.UpdateOrderView, name="order-update"),
  
]

Попробуйте обновить это в вашем models.py

class OrderItem(models.Model):
   username = models.CharField('Username', max_length=20, null=True, blank=True, primary_key=True)

Если вышеуказанное решение не работает, попробуйте удалить миграцию и python manage.py makemigrations снова

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