У меня проблема с отображением тарифа карты в соответствии с выбранной категорией карты

Пожалуйста, мне нужна помощь с моим проектом Django. У меня проблема с отображением стоимости карты в соответствии с выбранной категорией карты. У меня эта проблема уже некоторое время, пожалуйста, мне нужна помощь.

Here is my front-end

Вот мое мнение:

 @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-странице :

Вернуться на верх