【问题标题】:Value Error trying to get data from mysql in django尝试从 django 中的 mysql 获取数据时出现值错误
【发布时间】:2018-09-13 14:48:13
【问题描述】:

我正在运行一个django 应用程序,并且我已经实现了 MySQL。当我运行服务器并尝试加载页面时,我收到错误“十六进制 UUID 字符串格式错误”。这发生在第 140 行 init 中的 uuid.py 文件中,据我所知,这是因为值 hex 的长度不是 32,但我不知道如何解决这个问题问题。 这是数据库中的条目遵循的模型。

from django.db import models
import uuid
from django.db.models import (
    UUIDField,
    CharField,
    TextField,
    IntegerField,
    DecimalField,
    ImageField
)
# Create your models here.

class AnimeCatalog(models.Model):
    anime_id = UUIDField(primary_key = True, default=uuid.uuid4, editable=False)
    name = CharField(max_length=300)
    genre = CharField(max_length=300)
    typeanime = CharField(max_length = 10)
    episodes = IntegerField(default=0)
    rating = DecimalField(max_digits = 4, decimal_places = 2, null = True)
    members = IntegerField()
    anime_cover = ImageField(blank = True, null = True, upload_to = "img/animeCover", verbose_name = "Profile Photo")

然后我尝试在这个模型上调用 objects.all() 方法以从下面的 views.py 文件中的 mysql 中检索它

from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from django.views import View
from .forms import AnimeCatalogForm
from .models import AnimeCatalog
from .WebScraping import findAnimePic
import csv
from django.core.paginator import Paginator

# Create your views here.
def home(request):
    temp = []
    tempID = []
    pics = []
    fiveNames = []
    names = []

    new = AnimeCatalog.objects.all()

    for line in new:
        temp.append(line['name'].replace(''', ''))
        tempID.append(line['anime_id'])

    for x in range(0,5):
        pics.append(findAnimePic(tempID[x],temp[x]))

    for x in range(0, len(temp), 5):
        for y in range (5):
            if not(x+y >= len(temp)):
                fiveNames.append({'name':temp[x+y],'img':pics[y]})
        names.append(fiveNames)
        fiveNames = []
    items = {'names': names, 'imgs': pics}
    html = render(request, 'home/home.html', {'names':names})
    return html

这也是我导入 csv 文件的 mysql 中前几个条目的图片。 Image of mysql database with imported csv files

【问题讨论】:

    标签: python mysql django django-models django-views


    【解决方案1】:

    从该屏幕截图中可以清楚地看出,anime_id 包含整数,而不是 UUID。我不知道您为什么将其设置为 UUIDField 但您应该改用 AutoField 并删除默认值。

    【讨论】:

    • 谢谢。我会试试这个并回复你。我将其设置为 UUID,因为我最近开始学习 Django,所以我部分地用幻灯片跟随。
    猜你喜欢
    • 2022-09-24
    • 2022-01-02
    • 2019-09-03
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多