Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试syncDB(Python Django)时类中出错_Python_Django_Class - Fatal编程技术网

尝试syncDB(Python Django)时类中出错

尝试syncDB(Python Django)时类中出错,python,django,class,Python,Django,Class,尝试通过命令行同步数据库时出错 我的目标是一个具有特定条件的基本音乐搜索/删除/更新/添加应用程序,我正在使用Python和Django 我要写的课程是: from django.db import models # music search class musicsearch(models.Model): id = models.IntegerField title = models.CharField(max_length=40) artist = models.C

尝试通过命令行同步数据库时出错

我的目标是一个具有特定条件的基本音乐搜索/删除/更新/添加应用程序,我正在使用Python和Django

我要写的课程是:

from django.db import models

# music search
class musicsearch(models.Model):
    id = models.IntegerField
    title = models.CharField(max_length=40)
    artist = models.CharField(max_length=40)
    genre = models.CharField(max_length=20)
错误回溯:

C:\Users\jodie\Desktop\NtokloMH>python manage.py syncdb
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Python34\lib\site-packages\django\core\management\__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "C:\Python34\lib\site-packages\django\core\management\__init__.py", line 354, in execute
    django.setup()
  File "C:\Python34\lib\site-packages\django\__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Python34\lib\site-packages\django\apps\registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "C:\Python34\lib\site-packages\django\apps\config.py", line 202, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\Python34\lib\importlib\__init__.py", line 109, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1129, in _exec
  File "<frozen importlib._bootstrap>", line 1471, in exec_module
  File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
  File "C:\Users\jodie\Desktop\NtokloMH\musicsearch\models.py", line 4, in <module>
    class musicsearch(models.Model):
  File "C:\Python34\lib\site-packages\django\db\models\base.py", line 168, in __new__
    new_class.add_to_class(obj_name, obj)
  File "C:\Python34\lib\site-packages\django\db\models\base.py", line 297, in add_to_class
    value.contribute_to_class(cls, name)
TypeError: contribute_to_class() missing 1 required positional argument: 'name'
C:\Users\jodie\Desktop\NtokloMH>python manage.py syncdb
回溯(最近一次呼叫最后一次):
文件“manage.py”,第10行,在
从命令行(sys.argv)执行命令
文件“C:\Python34\lib\site packages\django\core\management\ \uuuu init\uuuu.py”,第385行,从命令行执行
utility.execute()
文件“C:\Python34\lib\site packages\django\core\management\\uuuu init\uuuuu.py”,第354行,在execute中
django.setup()
文件“C:\Python34\lib\site packages\django\\uuuu init\uuuuu.py”,第21行,在安装程序中
应用程序。填充(设置。已安装的应用程序)
文件“C:\Python34\lib\site packages\django\apps\registry.py”,第108行,在填充中
app_config.import_models(所有_models)
文件“C:\Python34\lib\site packages\django\apps\config.py”,第202行,在import\u模型中
self.models\u module=导入模块(models\u module\u name)
文件“C:\Python34\lib\importlib\\ uuuuu init\uuuuuu.py”,第109行,在导入模块中
return _bootstrap._gcd_import(名称[级别:],包,级别)
文件“”,第2254行,在_gcd_import中
文件“”,第2237行,在“查找”和“加载”中
文件“”,第2226行,在“查找”和“加载”中解锁
文件“”,第1200行,在“加载”中
文件“”,第1129行,在_exec中
exec_模块中第1471行的文件“”
文件“”,第321行,在“调用”中,删除了“帧”
文件“C:\Users\jodie\Desktop\NtokloMH\musicsearch\models.py”,第4行,在
课堂音乐搜索(models.Model):
文件“C:\Python34\lib\site packages\django\db\models\base.py”,第168行,新__
新建_类。将_添加到_类(obj_名称,obj)
文件“C:\Python34\lib\site packages\django\db\models\base.py”,第297行,在add\u to\u类中
值。贡献给类(cls,名称)
TypeError:contribution_to_class()缺少1个必需的位置参数:“name”

我发现您的模型存在两个问题

您没有创建
IntegerField
的实例;你需要称之为:

id = models.IntegerField()
#                       ^^
您正在为其他字段创建元组,因为每个字段都以逗号结尾:

title = models.CharField(max_length=40),
#                                      ^
删除那些逗号

您实际上不必指定自己的
id
字段;默认情况下,模型会自动指定一个
id
字段。请参见Django模型文档中的:

默认情况下,Django为每个模型提供以下字段:

id = models.AutoField(primary_key=True)
这是一个自动递增的主键

由于您指定的您自己的
id
字段未使用
primary\u key=True
,因此您的模型可能也会遇到问题。

您的id integerfield缺少两个()

id = models.IntegerField()

您好,Martijn,谢谢您在Stackoverflow ways上给了我提示:)请参阅!我删除了它们,但仍然得到了同样的结果(当我收到第一个错误时,我实际上试图将它们放在那里,因为我认为我错过了它们。谢谢,这已经解决了原始错误,但创建了一个新错误,错误:musicsearch.musicsearch:(models.E004)“id”只能在字段还设置了“primary_key=True”的情况下用作字段名。C:\Users\jodie\Desktop\NtokloMH>@akseone:我的答案已经包括了这一点。只需删除整个
id
行,您不需要它。Martijn非常感谢您!我还不能给您代表,但我一定会回来的