Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用slug装饰Django模型_Python_Django_Slug_Python Decorators - Fatal编程技术网

Python 用slug装饰Django模型

Python 用slug装饰Django模型,python,django,slug,python-decorators,Python,Django,Slug,Python Decorators,我目前正在开发一个django web应用程序,它需要多个模型的slug 由于我希望避免重复我自己的操作,“slug”字段是一种非常常见的模式,所以我想我可以创建一个装饰器,将slug添加到现有字段中 即 这将创建一个“title\u slug”字段,保存时使用“slugify”函数从标题创建slug 问题是我在python方面还没有那么先进,而且我对Django的了解也不是那么好。我甚至不知道这能不能做到 另外,不管我可能不知道的现有解决方案(某种内置的“slugify”装饰器),如果可能的话

我目前正在开发一个django web应用程序,它需要多个模型的slug

由于我希望避免重复我自己的操作,“slug”字段是一种非常常见的模式,所以我想我可以创建一个装饰器,将slug添加到现有字段中

这将创建一个“title\u slug”字段,保存时使用“slugify”函数从标题创建slug

问题是我在python方面还没有那么先进,而且我对Django的了解也不是那么好。我甚至不知道这能不能做到


另外,不管我可能不知道的现有解决方案(某种内置的“slugify”装饰器),如果可能的话,我想知道如何做到这一点,因为我在网上找不到任何关于这一点的信息,我相信其他人可能会在这种或那种情况下使用它。

您可能正在寻找一个
您将能够预填充此字段,至少在admin中可以确保:

#docs
It is often useful to automatically prepopulate a SlugField based on the value 
of some other value. You can do this automatically in the admin 
using prepopulated_fields.

您可能正在寻找一个
您将能够预填充此字段,至少在admin中可以确保:

#docs
It is often useful to automatically prepopulate a SlugField based on the value 
of some other value. You can do this automatically in the admin 
using prepopulated_fields.

谢谢,这就解决了这个具体问题。但是,我想知道是否可以使用装饰器向模型动态添加一个字段,以及如何做到这一点。@XelharK您应该使用slugfield从抽象模型继承。所以装饰器不是一个好主意?有没有具体的原因?无论如何都可以这样做吗?@XelharK:类装饰器可以工作(假设您只使用最新的Python版本-添加类装饰器仍然是最新的),并且可能是最灵活的解决方案(即它允许您参数化slug字段的创建)但是考虑到
models.Model
中涉及的所有元类巫毒,它可能有点复杂。抽象模型mixin提供的控制更少,但更易于实现。长话短说:取决于您的需要和对Python元类的熟练程度。谢谢,这就解决了这个特定的问题。但是,我想知道是否可以使用装饰器向模型动态添加一个字段,以及如何做到这一点。@XelharK您应该使用slugfield从抽象模型继承。所以装饰器不是一个好主意?有没有具体的原因?无论如何都可以这样做吗?@XelharK:类装饰器可以工作(假设您只使用最新的Python版本-添加类装饰器仍然是最新的),并且可能是最灵活的解决方案(即它允许您参数化slug字段的创建)但是考虑到
models.Model
中涉及的所有元类巫毒,它可能有点复杂。抽象模型mixin提供的控制更少,但更易于实现。长话短说:取决于您的需求和对Python元类的熟练程度。