擅长:python、mysql、java
<p>要进行实际的别名处理,您可以使用<a href="https://pypi.org/project/python-slugify/" rel="nofollow noreferrer">python-slugify</a>进行翻译。这将把它变成一个URL安全的ascii版本,处理西里尔文、中文、德语等</p>
<pre><code>>>> from slugify import slugify
>>> slugify('привет')
'privet'
>>> slugify('привет, привет', separator=' ')
'privet privet'
</code></pre>
<p>至于如何做到这一点,你的模型,有很多方法。这里有一个使用DRF序列化程序。我建议对create和get/list等使用不同的序列化程序</p>
<pre><code>class StoryCreateSerializer(serializers.ModelSerializer):
other_field = CharField(required=False)
class Meta:
model = Story
fields = ['title', 'other_field']
def validate(self, attrs):
attrs['alias'] = slugify(attrs['title'])
return attrs
ser = StoryCreateSerializer(request.data)
ser.is_valid(raise_exception=True)
print(ser.validated_data)
{ "title", "My Title", "alias": "my-title", "other_field": "x" }
</code></pre>