Как создать объект в django
можно ли создать новый продукт с помощью scrap.py в django ?
когда я никогда не запускаю scrap.py, я получаю эту ошибку
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
файл модели моего приложения
from django.db import models
from django.db import models
# Create your models here.
class Product(models.Model):
name = models.CharField(max_length=50)
age = models.IntegerField()
content = models.TextField(max_length=400)
def __str__(self):
return self.name
файл scrap.py
from models import Product
Product.objects.create( name = 'BMW',
age =25 ,
content = 'cool car'
)
Да, конечно, это возможно, просто импортируйте django
и настройте переменную DJANGO_SETTINGS_MODULE
:
import django
import os
# Configure settings for project
# Need to run this before calling models from application!
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app_name.settings') # Replace app_name with your application name.
# Import settings
django.setup()
# Import the models now
from app_name.models import Product
# Use the imported model
product = Product.objects.create(...)
Больше информации об этом посте
Для ошибки, с которой вы столкнулись выше, возможно, вы неправильно настроили Django.
Таким образом, этот вопрос имеет две проблемы, которые необходимо решить:
- Среда Django не настроена должным образом.
- Отправьте данные в модель из переполненных данных.
**1. Исправить проблему установки Django **
Для первого вопроса я советую вам настроить Django обычным образом, создав проект..... Затем, создайте приложение как python manage.py startapp product_app
ДОБАВЬТЕ product_app
в settings.INSTALLED_APPS
как:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'product_app' <----- without this the models.py won't work.
]
Затем перейдите к вашей models.py
и создайте модель Product
, например. Перенесите модель в вашу базу данных.
На ваш первый вопрос можно ответить.
2. Добавьте собранные данные в модель Django.
Вторая часть - отправка данных в таблицу product
, используя модель Product
(представление таблицы продуктов).
Поля, которые вы создадите, будут зависеть от данных, которые вам нужны. Допустим, данные, которые я хочу сохранить из просмотренных данных, следующие: name
, description
, price
, stock
и если это available
,
Отлично, давайте создадим нашу модель:
product_app/
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=250, unique=True)
description = models.TextField(blank=True)
price = models.DecimalField(max_digits=10, decimal_places=2)
stock = models.IntegerField(default =0)
available = models.BooleanField(default=True)
class Meta:
verbose_name = 'product'
verbose_name_plural = 'products'
def __str__(self):
return str(self.name)
Поскольку Django принимает словари в качестве объектов, используемых для запросов, вы можете получить эти данные в виде словаря/json для последующего размещения в таблице Product
.
Хорошо, теперь для вашей части вам нужно как-то получить данные в виде словаря, похожего на этот, и вставить их в таблицу Product:
data = {
"name":"bmw",
"description":"dont waste your money",
"price":25000.00,
"stock":4,
"available":True
}
Пример запроса:
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
>>> from product_app.models import Product
>>>
>>> data = {"name":"bmw", "description":"dont waste your money", "price":25000.00, "stock":4, "available":True,}
>>>
>>> product = Product(**data)
>>> product.save()
>>>
>>> product
<Product: bmw>
Отсюда вы можете делать с данными все, что захотите. Установите Django-Rest-Framework и отображайте данные как REST-API или отображайте данные в шаблоне.
Помните, что вы можете создавать необходимые запросы в файле views.py или где угодно.