#python #django #sqlite
Вопрос:
У меня есть эта модель.
class AuctionListings(models.Model):
"""
Model for all the listings listed on the site.
"""
title = models.CharField(max_length=40)
description = models.TextField()
image_url = models.URLField()
current_bid = models.PositiveSmallIntegerField()
category = models.CharField(choices=CATEGORIES, max_length=5)
date = models.DateField(default=date.today)
datetime = models.DateTimeField(default=timezone.now)
date_last_updated = models.DateField(auto_now=True)
date_added = models.DateField(auto_now_add=True)
timestamp_last_updated = models.DateTimeField(auto_now=True)
timestamp_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"Title:{self.title}, Date Added:{self.date_added}, Category:{self.category}"
class Meta:
"""
Specifies the plural name of the model for the Django Admin Panel.
"""
verbose_name_plural = "Auction Listings"
Я хочу иметь возможность устанавливать начальную ставку в списках аукционов, когда кто-то создает новый список. Точно так же, как это сделал бы eBay.
Я хочу, чтобы ставка также могла обновляться в модели ставок. И что если список будет удален, заявка на листинг также будет удалена. Потому что там нет списка. Я пробовал использовать внешний ключ, но потом я получаю это
Вы пытаетесь добавить ненулевое поле «current_bid» в аукционные списки без значения по умолчанию; мы не можем этого сделать (базе данных нужно что-то для заполнения существующих строк). Пожалуйста, выберите исправление:
- Теперь укажите одноразовое значение по умолчанию (будет установлено для всех существующих строк с нулевым значением для этого столбца).
- Выйдите и позвольте мне добавить значение по умолчанию в models.py
Это модель ставок, которую я хочу связать с моделью аукциона.
class Bids(models.Model):
"""
Model to allow one to place bids on listings.
"""
bid_price = models.ForeignKey(AuctionListings, on_delete=models.CASCADE)
bidder = models.ForeignKey(User, on_delete=models.CASCADE)
listings = models.ManyToManyField(AuctionListings)
Я только начал изучать Django и действительно не знаю, где искать, поэтому буду благодарен за некоторую помощь и объяснение того, что именно нужно делать.
Комментарии:
1. Может ли один пользователь сделать одну ставку для нескольких объявлений? У вас там много разных полей. Имеет ли это смысл? А затем у вас есть еще одно поле ForeignKey
bid_price
, разве это не должно быть целочисленное поле? Кажется, что-то не так.2. @Ene Paul Несколько объявлений могут быть выставлены одним и тем же человеком, вот почему я использую мужчину для многих. Я использую внешний ключ для цены предложения, потому что должна быть начальная цена, и она должна соответствовать заявкам, чтобы отражать эту цену. Хотя, похоже, это не может произойти.
3. Хорошо, но использование
ManyToManyField
подобного означает, что пользователь «делает ставки» на несколько объявлений именно с этимBid
. Например, если пользователь подал заявку на 3 объявления, должно быть 3 разных предложения, а не одна и та же заявка, поданная на 3 разных объявления.4. Я думаю, вы хотите использовать
ForeignKey
там. Он обладает множеством функций. Например, в списке может быть несколько предложений, но нельзя отправлять одну и ту же заявку в несколько списков.5. Я это осуществлю. Но есть ли у Django что-то вроде соединения с внешним ключом? Тогда я могу позволить bid_price быть внешним ключом, который присоединяется к текущему идентификатору.