gpt4 book ai didi

django - 验证错误: is not a valid UUID in Django

转载 作者:行者123 更新时间:2023-12-02 20:32:58 25 4
gpt4 key购买 nike

我正在使用Django 2.0

我有一个 Note 表和 StarredNotes 表。

最初,没有 id 字段,因为它是由 Django 默认添加为 integer 数据类型的。

现在我已将模型中的id数据类型更改为UUID

模型.py

class Starred(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
user = models.ForeignKey(User, on_delete=models.CASCADE)
note = models.ForeignKey(Note, on_delete=models.CASCADE)

objects = StarredManager()

class ColorLabels(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
title = models.CharField(max_length=100, unique=True)
value = models.CharField(max_length=100)
default = models.BooleanField(default=False)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)

def __str__(self):
return self.title + '(' + self.value + ')'

views.py

class StarredNotes(ListView):
template_name = 'notes/starred.html'
model = Starred
context_object_name = 'starred_notes'

def get_queryset(self):
starred_notes = Starred.objects.filter(user=self.request.user).order_by('-updated')
return starred_notes

@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
return super(self.__class__, self).dispatch(request, *args, **kwargs)

urls.py

app_name = 'notes'
urlpatterns = [
url(r'^$', MyNotes.as_view()),
url(r'^my/$', MyNotes.as_view(), name='my'),
path('<pk>/', NoteUpdate.as_view(), name='update'),
path('share-public/<pk>/', ShareNotePublic.as_view(), name='share-public'),
path('starred-notes/', StarredNotes.as_view(), name='starred'),
path('shared-notes/', SharedNotes.as_view(), name='shared'),
path('delete/<pk>/', DeleteNote.as_view(), name='delete'),
path('new/', NewNote.as_view(), name='new'),
path('<pk>/public/', PublicNoteView.as_view(), name='public-view'),
]

但是当我使用访问 View 时

http://127.0.0.1:1234/notes/starred-notes/

它给出的错误为

ValidationError at /notes/starred-notes/

["'starred-notes' is not a valid UUID."]

最佳答案

您的path('<pk>/', NoteUpdate.as_view(), name='update'),模式太常见了,它会拦截 starred-notes url。您需要将其移至列表底部或更好地添加 uuid 转换器 path('<uuid:pk>/', NoteUpdate.as_view(), name='update') .

关于django - 验证错误: is not a valid UUID in Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48101891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com