我在Django中有一个名为
Models.py:
ExampleModel
的模型,希望每个模型对象都具有唯一标识。然而,我不希望对象的ID在URL中对用户可见;因此,我希望对象的slug
是一个唯一的、随机生成的8位整数,将出现在视图URL中。这与其他类似问题不同,因为这意味着不会根据模型对象的名称/内容本身产生slug字符串。Models.py:
class ExampleModel(models.Model):
user = models.ForeignKey(UserModel, related_name='examplemodel', on_delete=models.CASCADE, null=True)
title = models.CharField(max_length=50, verbose_name='Title')
slug = models.SlugField(unique=True, blank=True, null=True)
目前slug的值是null,所以我不需要为所有当前的ExampleModel
对象设置默认的slug。
可以理解这是相当模糊的,然而我还没有找到任何可以适用于我的确切情况的指南/教程。
感谢提供任何帮助/指导。
编辑 这是我的views.py文件:
def model_create(request):
user=request.user.id
if request.user.is_authenticated:
try:
example = request.user.examplemodel
except ExampleProfile.DoesNotExist:
example = ExampleProfile(user)
if request.method == 'POST':
form = NewForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('/dashboard/')
else:
return render(request, 'create.html', {'form': form})
else:
form = NewForm()
return render(request, 'create.html', {'form': form})
else:
return redirect('/users/login/?next=')
编辑 2 Models.py(保存方法):
def save(self, *args, **kwargs):
if self.user is None: # Set default reference
self.user = UserModel.objects.get(id=1)
super(ExampleModel, self).save(*args, **kwargs)