python - Django OneToOne 字段

标签 python django url

现在我正在处理一个 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)

这将具有相应的UserCompanyStore 模型。

关于python - Django OneToOne 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7630228/

相关文章:

Django : testing static files

ruby-on-rails - 哪个更适合 Rails 站点?/{login} 或/user/{login}

url - 通过URL运行自动化脚本

Python/MySQL - 错误 1064,无法弄清楚

python - 确定音频文件中声音的长度

Django bulk_create 忽略导致 IntegrityError 的行?

django - 为什么我们在 django 的表单上使用 cleaned_data

Php - 尝试将 URL 插入 MySQL 表

python - Django 将状态为 200 的请求记录到系统日志

python - 非 PyQt 模块在 QApplication 启动后停止工作