「post_id」を主キーフィールドとして含む「投稿」モデルを作成しました。投稿を作成しようとすると、「ひどく16進数のUUID文字列を形成しました」というエラーが発生しています。私はこれを解決するために私を助けてくれてありがとう。Python:問題を解決する方法:Djangoで「16進数のUUID文字列が不正に形成されました」
ここに私のコードです。
Models.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'を追跡するためにそれらのいずれか一つを使うことができます。 – jape
完全なエラーは何ですか? – Pureferret
引用符なしで試してみてください。 'default = uuid.uuid4' – Rohan