У меня есть модель клиники и в настоящее время их ссылки выглядят как этотДжанго 1.6: создание пробкового URL
localhost:8000/clinic/1/
Я хочу, чтобы они выглядели как этот
localhost:8000/clinic/Nice-Medical-Clinic/
Я хочу слизняк быть название клиники
Здесь представлен models.py
class Clinic(models.Model):
name = models.CharField(max_length=500)
email = models.EmailField(blank = True, null = True)
address = map_fields.AddressField(max_length=200
website = models.CharField(max_length=50, blank = True, null = True)
submitted_on = models.DateTimeField(auto_now_add=True, null = True, blank = True)
def get_absolute_url(self):
from django.core.urlresolvers import reverse
return reverse('meddy1.views.clinicProfile', args=[str(self.id)])
Вот views.py
def clinicProfile(request, slug, id):
clinic = Clinic.objects.get(id=id)
doctors = Doctor.objects.all().order_by('-netlikes')
d = getVariables()
d.update({'clinic': clinic, 'doctors': doctors, })
return render(request, 'meddy1/clinicprofile.html', d)
urls.py
url(r'^clinic/(?P<id>\d+)/$', views.clinicProfile, name='clinicProfile'),
Благодаря @cor. Это будет работать только для новых клиник, которые я добавляю. Как насчет существующих клиник? Как я могу заставить существующие клиники иметь слизь в качестве имени клиники? –
Я не знаю, как это сделать. Я сделал бы это вручную из оболочки. После того, как вы внесете изменения и перенесете de db, что-то вроде: «clinics = Clinic.objects.all()», а затем «для клиники в клиниках: clinic.slug = slugify (clinic.name, instance = clinic)» – cor
Это на самом деле легче, чем это. 'clinics = Clinic.objects.all()', а затем 'для клиники в клиниках: clinic.save()'. Также имейте в виду, что имена клиник должны быть уникальными. Вы не можете сопоставить одни и те же URL-адреса в двух разных клиниках. – Jonathan