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 в отношениях.
- Удалите файл
db.sqlite3
или базу данных, которую вы используете- если нет
db.sqlite3
: воссоздайте базу данных после
- если нет
- Удалите все миграции
- Запустите
python manage.py makemigrations
+python manage.py migrate
- Продолжить разработку
шагами отладки является попытка #3, и если это не сработает, выполните шаги 1-3*
и помните: Базы данных Dev легко выбрасываются в мусор.
* Примечание: В старых проектах, имеющих версию Production, пропустите #2