Я застрял пару часов, и я не могу решить эту проблему.Django SlugField не уникален
Следующий код работает хорошо, но если я пишу "Title", которые уже существуют, я получаю:
UNIQUE constraint failed: appname_shopaccount.url_shop
Модель
class ShopAccount(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=150)
url_shop = models.SlugField(max_length=200, unique=True)
company_name = models.CharField(max_length=200)
def save(self, *args, **kwargs):
self.url_shop = slugify(self.title)
super(ShopAccount, self).save(*args, **kwargs)
def __str__(self):
return self.title
Формы
class SignUpShopForm(ModelForm):
class Meta:
model = ShopAccount
fields=['title', 'company_name']
exclude= ('user',)
error_messages = {
'title': {
'required': "Enter a Shop name",
},
'company_name': {
'required': "Enter a Company name",
}
}
Посмотреть
def signup_shop(request):
if request.POST:
form = SignUpShopForm(request.POST)
if form.is_valid():
account = form.save(commit=False)
account.user = request.user
account.save()
return HttpResponseRedirect('/account/updated/')
else:
form = SignUpShopForm(data=request.POST)
return render_to_response('register_shop.html', { 'form':form }, context_instance=RequestContext(request))
else:
return render_to_response('register_shop.html', context_instance=RequestContext(request))
Как я могу решить эту проблему?
Это также может сработать для вас, хотя я никогда не пробовал - https://pypi.python.org/pypi/django-autoslug. Я могу поручиться за уникальный_slugify, являющийся простым методом простого dang. –
Если это вам помогло, не стесняйтесь отмечать это как ответ;) –