Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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
Python Django mysql表名未验证_Python_Mysql_Django_Orm_Mysql Python - Fatal编程技术网

Python Django mysql表名未验证

Python Django mysql表名未验证,python,mysql,django,orm,mysql-python,Python,Mysql,Django,Orm,Mysql Python,我向Django应用程序模型添加了类,以创建mysql表。我有“下载”表和“歌曲”表中的“下载”列 当我想同步数据库时,Django返回错误: CommandError: One or more models did not validate: mp3mid.downloads: Reverse query name for field 'song' clashes with field 'songs.downloads'. Add a related_name argument to the

我向Django应用程序模型添加了类,以创建mysql表。我有“下载”表和“歌曲”表中的“下载”列

当我想同步数据库时,Django返回错误:

CommandError: One or more models did not validate:
mp3mid.downloads: Reverse query name for field 'song' clashes with field 'songs.downloads'. Add a related_name argument to the definition for 'song'.
为什么表和列不可能有相同的名称

这是my models.py:

from django_evolution.mutations import *
from django.db import models

class singers(models.Model):
    name = models.CharField(max_length = 255)
    category = models.ForeignKey(categories)

class songs(models.Model):
    name = models.CharField(max_length = 255)
    singer = models.ForeignKey(singers)
    downloads = models.IntegerField(max_length = 11)
    exclusive = models.BooleanField(default = 0)
    hit = models.BooleanField(default = 0)
    date = models.DateTimeField(auto_now_add = True)
    link = models.CharField(max_length = 255)

class downloads(models.Model):
    song = models.ForeignKey(songs)
    date = models.DateTimeField(auto_now_add = True)
Django允许您进行以下操作

在您的情况下,从
下载
歌曲
的外键意味着您通常可以按照歌曲到下载之间的关系进行查询:

from datetime import datetime
# fetch all songs with a download with a date on or after 2013-05-01.
songs = song.objects.filter(downloads__date__gte=datetime(2013,5,1))
但是,在这种情况下不能这样做,因为
下载
与您的
歌曲.downloads
字段冲突

class songs(models.Model):
    ...
    num_downloads = models.IntegerField(max_length = 11)
你有两个选择。首先,您可以按照错误消息的建议设置外键

class downloads(models.Model):
    song = models.ForeignKey(songs, related_name="related_downloads")
或者,您可以重命名您的
歌曲。下载
字段

class songs(models.Model):
    ...
    num_downloads = models.IntegerField(max_length = 11)
另外,我建议您将您的模特重命名为
Singer
Song
Download
(大写,单数而非复数),以遵循Django惯例。

Django允许您这样做

在您的情况下,从
下载
歌曲
的外键意味着您通常可以按照歌曲到下载之间的关系进行查询:

from datetime import datetime
# fetch all songs with a download with a date on or after 2013-05-01.
songs = song.objects.filter(downloads__date__gte=datetime(2013,5,1))
但是,在这种情况下不能这样做,因为
下载
与您的
歌曲.downloads
字段冲突

class songs(models.Model):
    ...
    num_downloads = models.IntegerField(max_length = 11)
你有两个选择。首先,您可以按照错误消息的建议设置外键

class downloads(models.Model):
    song = models.ForeignKey(songs, related_name="related_downloads")
或者,您可以重命名您的
歌曲。下载
字段

class songs(models.Model):
    ...
    num_downloads = models.IntegerField(max_length = 11)

另外,我建议您将您的模特重命名为
Singer
Song
Download
(大写,单数而非复数),遵循Django惯例。

你能发布你的模型类吗@dm03514 added models.py文件怎么样。你能发布你的模型类吗@dm03514 added models.py文件怎么样。