【发布时间】:2016-11-22 10:21:52
【问题描述】:
我创建了“post”模型,其中包含“post_id”作为主键字段。当我尝试创建帖子时,它会引发错误:“格式错误的十六进制 UUID 字符串”。我将不胜感激帮助我解决这个问题。
这是我的代码。
模型.py:
class Post(models.Model):
post_id = models.UUIDField(primary_key=True, default='uuid.uuid4', editable=False)
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
from1 = models.CharField(max_length=20)
To = models.CharField(max_length=20)
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
objects = PostManager()
def __unicode__(self):
return self.post_id
def __str__(self):
return self.post_id
def get_absolute_url(self):
return reverse("posts:detail", kwargs={"post_id": self.post_id})
class Meta:
ordering = ["-timestamp", "-Time"]
views.py:
def post_create(request):
form = PostForm(request.POST or None)
if form.is_valid():
instance = form.save(commit=False)
print(form.cleaned_data.get("post_id"))
instance.user = request.user
instance.save()
return HttpResponseRedirect(instance.get_absolute_url())
context = {
"form": form,
}
return render(request, "loggedin_load/post_load.html", context)
【问题讨论】:
-
为什么要创建自定义
post_id?默认情况下,Django 模型包含id和pk字段。您可以使用其中任何一个来跟踪post_id。 -
你得到的完整错误是什么?
-
尝试不带引号,
default=uuid.uuid4 -
@Rohan 如果我要删除引号,则会引发名称错误:未定义名称'uuid'。
-
uuid是模块,你使用它的方式你只需要import uuid
标签: django django-models django-views auto-generate