【问题标题】:Getting Error when trying to save Django Model to My Sql Dtatabase尝试将 Django 模型保存到 Mysql 数据库时出错
【发布时间】:2021-10-13 00:08:55
【问题描述】:

您好,当我尝试保存模型 AttributeError: 'tuple' object has no attribute 'startswith.
基本上,该程序应显示所有用户的列表。但即使在表中已经有一些条目。我在Web端显示的表格是空的,没有显示错误。

models.py:

from django.db import models
from django.db import connections



class Users(models.Model):
    identifier  = models.CharField(primary_key=True,max_length=100)
    accounts = models.TextField()
    group = models.CharField(max_length=100)
    inventory = models.TextField()
    job = models.CharField(max_length=100)
    job_grade = models.IntegerField()
    loadout = models.TextField()
    position = models.CharField(max_length=300)
    firstname = models.CharField(max_length=100)
    lastname = models.CharField(max_length=100)
    dateofbirth = models.CharField(max_length=100)
    sex = models.CharField(max_length=100)
    height = models.IntegerField()
    skin = models.TextField()
    status = models.TextField()
    is_dead = models.SmallIntegerField()
    phone_number = models.CharField(max_length=100)
    class Meta:
        db_table = "users",

views.py

from django.shortcuts import render
from .models import Users

# Create your views here.
def show(request):


    newUser = Users(
    identifier  = "abc",
    accounts = "[]",
    group = "admin",
    inventory = "[]",
    job = "police",
    job_grade = 3,
    loadout ="[]",
    position = "da",
    firstname = "swpw",
    lastname = "wwww",
    dateofbirth = "wolplwodokwowdüp",
    sex = "m",
    height = 78,
    skin = "[]",
    status = "[]",
    is_dead = 0,
    phone_number = "hallo",)

    newUser.save()
    return render(request,'acp/show.html',{'user':users})

【问题讨论】:

  • 删除db_table = "users",中的尾随逗号。

标签: python mysql django django-models


【解决方案1】:

对于db_table,它需要一个字符串,而不是单例元组。通过删除尾随逗号,您可以将项目包装在一个单例元组中:

class Users(models.Model):
    # …
    
    class Meta:
        db_table = 'users'  # ← remove the trailing comma

如果表已经存在,您应该避免自己管理表,因此您将managed=True [Django-doc] 添加到Meta 选项中:

class Users(models.Model):
    # …
    
    class Meta:
        db_table = 'users'
        managed = True

注意:通常 Django 模型被赋予一个单数名称,所以User而不是Users

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 2016-06-14
    • 2020-07-11
    相关资源
    最近更新 更多