现在我正在处理一个 url 映射。假设我有三个类,company、user 和 store,我的目标是它们的 url 将处于同一层次结构中。因为它们在 url 中是相同的层次结构,所以我必须创建一个类 url_mapping 以确保没有重复的名称。让我给出一个更具体的问题。
Class Company(models.Model):
company_name = models.CharField(max_length=30)
url_mapping = models.OneToOneField(URL_mapping)
Class User(models.Model):
user_name = models.CharField(max_length=30)
url_mapping = models.OneToOneField(URL_mapping)
Class store(models.Model):
store_name = models.CharField(max_length=30)
url_mapping = models.OneToOneField(URL_mapping)
Class URL_mapping(models.Model):
url = models.CharField(max_length=30)
现在,当访问者通过某个url访问我的网站时,我会匹配URL_mapping类中的url,然后进行反向查找,看看它是公司、用户和商店之间的哪种类型的url。
既然User、Store、Company有不同的 View 函数,那么我们是否可以通过反向查找快速重定向到对应的 View 函数呢?或者我应该在 URL_mapping 中添加另一个字段来说明它是哪种 url 类型?
例子是
http://www.example.com/levis -> will handle by brand_views
http://www.example.com/david -> will handle by user_views
http://www.example.com/mancy -> will handle by store_views
在数据库中,我们将有
url_mapping
id:1, name:levis
id:2, name:david
id:3, name:mancy
user
id:1, name:david, url_mapping:2
brand
id:1, name:levis, url_mapping:1
store
id:1, name: mancy, url_mapping:3
其中 url_mapping 是 oneToOneField。
现在不知道如何从url_mapping类快速查找。
谢谢。
最佳答案
我将您的问题理解为“我有一个 URL,我想转到相应的商店、公司或用户”。
你可以使用
URL_mapping.objects.get(url).user
URL_mapping.objects.get(url).store
URL_mapping.objects.get(url).company
很明显,其中 2 个会给你一个错误,你不知道它映射到哪个。
在我看来,对于你在这里真正寻找的东西,你真的应该使用 Generic Foreign Keys
那么,你将能够做到:
URL_mapping.objects.get(url)
这将具有相应的User
、Company
或Store
模型。
关于python - Django OneToOne 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7630228/