Django 斯拉格菲尔德的诺维瑟维奇?

Django 斯拉格菲尔德的诺维瑟维奇?,django,Django,我对modelteam的team\u name字段进行了“slugized”,以便在URL中更漂亮地显示空格。然而,当我尝试切换传递到URL的pk变量时,我得到了一个slug的NoReverseMatch。使用团队名称可以正常工作 型号 class Team(models.Model): team_name = models.CharField(max_length=25, unique=True) team_name_slug = models.SlugField(max_l

我对model
team
team\u name
字段进行了“slugized”,以便在URL中更漂亮地显示空格。然而,当我尝试切换传递到URL的pk变量时,我得到了一个slug的NoReverseMatch。使用
团队名称
可以正常工作

型号

class Team(models.Model):

    team_name = models.CharField(max_length=25, unique=True)
    team_name_slug = models.SlugField(max_length=25, unique=True)
def team_public_profile(request, pk):
    team = get_object_or_404(Team, team_name=pk)
    ... other code

---

<form action="{% url 'team_public_profile' pk=team_name %}">

视图+模板URL(这不起作用)

def团队公共档案(请求、主键):
团队=获取对象或404(团队,团队名称\u slug=pk)
... 其他代码
---

这很有效

class Team(models.Model):

    team_name = models.CharField(max_length=25, unique=True)
    team_name_slug = models.SlugField(max_length=25, unique=True)
def team_public_profile(request, pk):
    team = get_object_or_404(Team, team_name=pk)
    ... other code

---

<form action="{% url 'team_public_profile' pk=team_name %}">
def团队公共档案(请求、主键):
团队=获取对象或404(团队,团队名称=主键)
... 其他代码
---

首先,您需要使用团队模型
save()
上的
django.utils.text.slugify
方法填充
团队名称\u slug
,如:

  from django.utils.text import slugify

  class Team(models.Model):
      ...

      def save(self, *args, **kwargs):
        if self.team_name:
            self.team_name_slug = slugify(self.team)
        super(Team, self).save(*args, **kwargs)
您的URL应该如下所示:

  url(r'^teams/(?P<team_name_slug>[\w-]+)/$', views.team_public_profile, name='team_public_profile')



您是否介意显示您的
URL.py
?@nik\m谢谢。这就是问题所在,我将url正则表达式从
(?P[\w]+)
更改为
(?P[\w-]+)
。现在它工作了。问题出在我的URL正则表达式中。我在
(?P[\w-]+)
中没有
-
。谢谢
 <form action="{% url 'team_public_profile' team_name_slug=team_name_slug %}">