我搜索过很多关于unique_together的答案,但是找不到合适的东西。我有这样的模特:
class Skill(models.Model):
user = models.ForeignKey(User, blank = True)
title = models.CharField()
...
class Meta:
unique_together = ("user", "title")
并形成如下:
class SkillForm(forms.ModelForm):
class Meta:
model = Skill
fields = (
'title',
...
)
但是现在当我尝试创建具有相同用户和标题的新技能时,我得到了:
IntegrityError at /skill/new/ UNIQUE constraint failed: personal_page_platform_skill.user_id, personal_page_platform_skill.title
我需要一种正确的方法来捕捉这种情况,而不需要用户字段。我不想让用户选择他们创建技能的人。 问题不是空白=用户的真,因为在我的视图中我从请求获得用户。另外get_or_create方法不适合我,我想。
如果需要,我的观点在这里:
@login_required
def skill_new(request):
if request.method != "POST":
form = SkillForm()
return render(request, '...', {'form': form})
form = SkillForm(request.POST)
if not form.is_valid():
return render(request, '...', {'form': form})
skill = form.save(commit=False)
skill.user = request.user
skill.save()
return redirect('...', username=request.user.username)