Get() возвращает более одного сообщения - возвращает 2
У меня возникла проблема в django. Я создаю сайт интернет-магазина и добавляю раздел товаров, где перечислены мои товары (html). Я добавляю свои товары из админки (models.py). Когда я хочу добавить товары, я выдаю ошибку вроде этой : get() вернул более одного Post - он вернул 2!
Вот мои коды :
views.py
class PostDetail(generic.DetailView):
model = Post
template_name = "shop-single.html"
def get_context_data(self, **kwargs):
models = Post.objects.get()
context = super().get_context_data(**kwargs)
client = Client(api_key = settings.COINBASE_COMMERCE_API_KEY)
domain_url = "https://www.nitroshop.store/"
product = {"name" : f'{models.title}' , 'description': f'{models.subject}' , "local_price" : {'amount' : f'{models.product_price}' , "currency" : "USD"} , "pricing_type" : "fixed_price" , "redirect_url" : domain_url + "NXnUijYpLIPy4xz4isztwkwAqSXOK89q3GEu5DreA3Ilkde2e93em8TUe99oRz64UWWBw9gEiiZrg60GMu3ow" , "cancel_url" : domain_url + "products"}
charge = client.charge.create(**product)
context['charge'] = charge
return context
models.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
STATUS = (
(0 , "Draft"),
(1 , "Publish")
)
class Post(models.Model):
title = models.CharField(max_length = 200 , unique = True)
slug = models.SlugField(max_length = 200 , unique = True)
author = models.ForeignKey(User , on_delete = models.CASCADE , related_name = "shop_posts")
updated_on = models.DateTimeField(auto_now = True)
subject = models.CharField(max_length = 200 , default = "We offer you pay with Tether or Litecoin")
caption = models.TextField()
product_brand = models.CharField(max_length = 200 , default = "Add parametr")
product_price = models.CharField(max_length = 200 , default = "Add parametr")
opt = models.TextField(default = "Add parametr")
image = models.ImageField(upload_to = "images/" , default = "None")
created_on = models.DateTimeField(auto_now_add = True)
status = models.IntegerField(choices = STATUS , default = 0)
class Meta:
ordering = ["-created_on"]
def __str__(self):
return self.title
Я должен использовать шлюз coinbase для оплаты. Я хочу, чтобы когда пользователь переходит к оплате на coinbase, название продукта (название каждого продукта) устанавливалось на название coinbase и .... Но у меня возникает ошибка, когда я хочу добавить больше продуктов
Не могли бы вы мне помочь?
models = Post.objects.get()
Этот метод предназначен для get()
одного объекта из модели. Если вы не применяете никаких параметров, то он пытается получить все объекты в QuerySet
. Если их больше одного (или None), то будет выдана ошибка. И это происходит, потому что я могу предположить, что у вас есть два Post
объекта в вашей базе данных.
Вам нужно передать параметр типа:
models = Post.objects.get(id=some_id)