【问题标题】:How can I store many Django model types in a database and access them as an object?如何将许多 Django 模型类型存储在数据库中并将它们作为对象访问?
【发布时间】:2010-12-11 16:53:25
【问题描述】:

我有以下 Django 模型:

Bar, Bistro and Restaurant

上述每家店都有自己的菜单项,例如:

  1. 酒吧
    • 汉堡
    • 薯条
    • ...
  2. 小酒馆
    • 意大利面
    • 披萨
    • ...
  3. 餐厅
    • 鸭子
    • 翅膀
    • ...

我的主页中有不同类型的图像,主横幅、左侧栏和右侧栏。这些图像中的每一个都将链接到酒吧、小酒馆和餐厅的菜单项。我目前正在为管理员中的每个图像硬编码网址:

class Image(models.Model):
    alt_name = models.CharField
    source = models.ImageField
    url = models.CharField

以上工作正常,但如果其中一个菜单项发生更改,我将不得不返回管理员并重新编写新的 url。我正在考虑改进我的管理员,使其如下所示:

选择适当的机构将填充适当的菜单项。在后端,数据库将存储对应于设施类型的字符串以及与该设施相关的菜单项的主键。我需要建立关联,因为菜单项存储在它们自己的表中(BarMenuItem、BistroMenuItem 和 RestaurantMenuItem)。

给定一个字符串Bistro,是否可以在Django中检索其对应的同名模型?我相信我可能对上述解决方案太过分了,如果您有任何建议,请告诉我您的想法。

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    给定一个字符串 Bistro,是否可以在 Django 中检索其对应的同名模型?

    是的。

    model = ContentType.objects.get(model='Bistro').model_class()
    

    http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/

    【讨论】:

    • 对方法的思考:也许您应该使用 ContentType 框架在 Image 类中具有外键,并具有根据链接对象的值计算 url 的可调用对象?跨度>
    • 这正是我要找的,让我试一试。
    猜你喜欢
    • 2019-10-22
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多