OperationalError at / нет такой колонки: accounts_customer.user_id

Я следовал этому руководству, все шло гладко, но у меня возникла ошибка, и я не уверен, как ее решить. Я добавил отношения onetoone к модели customer с моделью user. `models.py

enter code here
from django.db import models
from django.core.validators import RegexValidator
from django.contrib.auth.models import User

class customer(models.Model):
    user=models.OneToOneField(User,null=True,on_delete=models.CASCADE)
   
    name=models.CharField(max_length=200,null=True)
    phone_no=models.CharField(max_length=200, validators 
    [RegexValidator(r'^\d{1,10}$')],null=True)
    email=models.EmailField(max_length=200,null=True)

    def __str__(self):
        return self.name

class tag(models.Model):
    name=models.CharField(max_length=200,null=True)


    def __str__(self):
        return self.name

class products(models.Model):
   
    categories=[
    ('indoor','indoor'),
    ('outdoor','outdoor')
    ]
    name=models.CharField(max_length=200,null=True)
    price=models.FloatField(null=True)
    manufacturedate=models.DateTimeField(auto_now_add=True,null=True)
    description:models.TextField(null=True)
    categories=models.CharField(max_length=200,null=True,choices=categories)
    tag=models.ManyToManyField(tag)

    def __str__(self):
        return self.name


class order(models.Model):
    
    status=[
        ('pending','pending'),
        ('out of stock','out of stock',),
        ('Delivered',('Delivered'))
    ]
    ordered_date=models.DateTimeField(auto_now_add=True)
    status=models.CharField(max_length=200,null=True,choices=status)
    customer=models.ForeignKey(customer,null=True,on_delete=models.SET_NULL)
    product=models.ForeignKey(products,null=True,on_delete=models.SET_NULL)

    def __str__(self):
        return self.product.name

Я действительно запутался. Я застрял здесь на некоторое время. Все было хорошо, пока я не добавил отношения onetoone.

views.py

введите код здесь из multiprocessing import context из django.shortcuts import render,redirect from django.contrib.auth.models import Group from .models import * from .forms import CreateCustomer,CreateOrder,CreateUser from .filters import FilterSearch

Я буду очень признателен за вашу помощь

urls.py

enter code here
from django.urls import path

from . import views

urlpatterns=[
    path('registeruser/',views.registeruser,name="registeruser"),
    path('login/',views.loginuser,name="login"),
    path('user/',views.userprofile,name='userprofile'),
    path('logout/',views.logoutuser,name="logout"),
    path('',views.home,name="home"),
    path('products/',views.product,name='product'),
    path('customers/<str:pk>/',views.Customer,name='customer'),
    path('Createcustomers/',views.createcustomer,name='createcustomer'),
    path('Createorder/',views.createorder,name='createorder'),
    path('updateorder/<str:pk>/',views.updateOrder,name='updateorder'),
    path('deleteorder/<str:pk>/',views.deleteOrder,name='deleteorder'),
]

Я понимаю, что такое ошибка. Вы проверяете идентификатор, используя: Customer=customer.objects.get(id=pk) в функции customer в файле views.py.

но вы пишете: path('customers/str:pk/',views.Customer,name='customer')
> в url.py.

Значит, вы проверяете "Id (целочисленное значение)" в вашей функции клиента, но передаете pk как строковое значение. Поэтому python считает строковым, а не целочисленным значением.

поэтому вы должны изменить "customers/int:pk/" в файле urls.py.

запустите сервер и запустите его.

Надеюсь, вы получили решение.

Просто удалите все папки миграции и выполните миграцию вручную, выполнив следующую команду:

python manage.py makemigrations appname

python manage.py sqlmigrate appname 0001 

python manage.py migrate

Попробуйте приведенную выше команду и посмотрите, решит ли это вашу ошибку

у каждого клиента нет пользователя в базе данных. потому что вы добавили его последним. Зайдите в панель администратора. И добавьте поле onetoone user вручную из базы данных. Тогда это должно сработать. Другой метод заключается в том, что вы должны исключить исключение, если есть null или id в отношениях.

  1. Удалите файл db.sqlite3 или базу данных, которую вы используете
    • если нет db.sqlite3: воссоздайте базу данных после
  2. Удалите все миграции
  3. Запустите python manage.py makemigrations + python manage.py migrate
  4. Продолжить разработку

шагами отладки является попытка #3, и если это не сработает, выполните шаги 1-3*

и помните: Базы данных Dev легко выбрасываются в мусор.

* Примечание: В старых проектах, имеющих версию Production, пропустите #2

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