首页 > 解决方案 > 如何使用外键链接多个模型并制作相应的视图以获取在 Django 中的模板处呈现的数据?

问题描述

我正在创建一个 Web 应用程序,用户可以在该应用程序中在网站上出售他的旧手机并获得手机的最大可用价值。

这个过程有点类似于 Cashify。(https://www.cashify.in/sell-old-mobile-phone)。

一旦用户点击特定品牌,它就会列出该品牌下的所有可用设备。

当用户点击特定设备时,它会转到显示手机不同变体的 URL。当用户选择变体时,它向用户显示的设备的最高可用价格。

这是代码:

模型.py

class Brand(models.Model):
    title               = models.CharField(max_length=50)
    brand_image         = models.ImageField()
    slug                = models.CharField(max_length=50, default='slug')

    class Meta:
        verbose_name_plural = "Brands"

    def __str__(self):
        return self.title

class Storage(models.Model):
    ram_storage = models.CharField(max_length=2, default=1)
    rom_storage = models.CharField(max_length=3, default=2)
    class Meta:
        verbose_name_plural = "Storages"

    def __str__(self):
        return (self.ram_storage + "/" + self.rom_storage)

class Mobile(models.Model):
    title = models.CharField(max_length=50)
    thumbnail = models.ImageField()
    slug = models.CharField(max_length=50)
    max_selling_price = models.IntegerField(default=10000)

    brand = models.ForeignKey(Brand, default="Apple", related_name='brand', verbose_name="Brands", on_delete=models.SET_DEFAULT)
    storage = models.ForeignKey(Storage, related_name='storage', default=1, verbose_name="Storage", on_delete=models.CASCADE)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('brand-detail', kwargs={
            'slug': self.slug
        })

视图.py

def brand_detail_view(request, slug):
    phone = Mobile.objects.filter(brand__slug = slug)
    context = {
        "phones": phone
    }

    return render(request, "brand-detail.html", context)

def phone_detail_view(request, slug):
    phone = get_object_or_404(Mobile, brand__slug=slug)
    context = {
        "phone": phone
    }
    return render(request, "phone-detail.html", context)

标签: pythondjangodjango-modelsdjango-views

解决方案


推荐阅读