У меня проблема с отображением тарифа карты в соответствии с выбранной категорией карты
Пожалуйста, мне нужна помощь с моим проектом Django. У меня проблема с отображением стоимости карты в соответствии с выбранной категорией карты. У меня эта проблема уже некоторое время, пожалуйста, мне нужна помощь.
Вот мое мнение:
@login_required(login_url='/Authentication/login')
def giftcard(request):
giftcards = Giftcard.objects.filter(publish=True)
context = {
'giftcards': giftcards,
'categories': categories,
}
return render(request, 'dashboard/giftcard.html', context)
Вот мои модели и я связываю их с помощью ForeignKey:
class Giftcard(models.Model):
name = models.CharField(max_length=100, unique=True)
card_image = models.ImageField(upload_to='Giftcard/', blank=False)
date = models.DateTimeField(auto_now_add=True)
publish = models.BooleanField(default=False)
class Category(models.Model):
category = models.CharField(max_length=250)
card = models.ForeignKey(Giftcard, on_delete=models.CASCADE)
class CardRate(models.Model):
rate = models.IntegerField()
card_category = models.ForeignKey(Category, on_delete=models.CASCADE)
Вот мой шаблон, я думаю, что я пишу неправильный код здесь:
Вам нужно поместить внешний ключ в класс gift card, а не в category, потому что каждая карта имеет категорию, а каждая категория имеет одну или много карт, поэтому вам нужно сделать это в вашем models.py :
class Category(models.Model):
category = models.CharField(max_length=250)
class Giftcard(models.Model):
name = models.CharField(max_length=100, unique=True)
card_image = models.ImageField(upload_to='Giftcard/', blank=False)
date = models.DateTimeField(auto_now_add=True)
publish = models.BooleanField(default=False)
Category = models.ForeignKey(Category, on_delete=models.CASCADE)
Согласно вашему комментарию вы можете попробовать следующее добавить related_name в поле вашей карточки :
class Category(models.Model):
category = models.CharField(max_length=250)
card = models.ForeignKey(Giftcard, on_delete=models.CASCADE,
related_name="categories")
и с вашей точки зрения :
@login_required(login_url='/Authentication/login')
def giftcard(request):
giftcards = Giftcard.objects.filter(publish=True)
categories = giftcards.categories.all()
context = {
'giftcards': giftcards,
'categories': categories,
}
return render(request, 'dashboard/giftcard.html', context)
На вашей html-странице :
