單個類中可能存在多個多對多關係嗎?這裏是我的想法:Django多對多關係不起作用
策略可以被翻譯成多種文字
一個語言可以列出許多政策
一個國家可以列出許多政策(甚至是多國語言)
策略可以在許多討論國家
我正在使用django,python3和mysql,我正在圈子裏。多對多的關係似乎成了問題。
多對多通過表不工作: 語言= models.ManyToManyField(語言,通過= 「Policy_Detail」)
步驟圓形錯誤消息:
別名P3 = 「python3」
P3 manage.py遷移
錯誤消息:django.db.utils.OperationalError:(1050, 「表 'policytracker_country' 已存在」)
下降policytracker_country和所有其他policytracker表
鍵入P3 manage.py使遷移
沒有變化來檢測
鍵入P3 manage.py遷移
(1051, 「未知表 'PolicyDB.policytracker_flag'」)
mysql> show tables;
+ ------------------------------ +
| Tables_in_PolicyDB |
+ ------------------------------ +
| policytracker_country |
| policytracker_events |
| policytracker_policy_user |
| policytracker_website |
| policytracker_website_filter |
+ ------------------------------ +
添加policytracker_flag和使用MySQL policytracker_label_links(即使我不在我的代碼中沒有提及它們中的任何一個)
丟棄了所有其他策略追蹤表
+ --------------------------- - +
| Tables_in_PolicyDB |
+ ---------------------------- +
| policytracker_flag |
| policytracker_label_links |
+ ---------------------------- +
P3 manage.py makemigrations
沒有變更檢測
p3管理。PY遷移
django.db.utils.ProgrammingError:(1146, 「表 'PolicyDB.policytracker_policy_detail' 不存在」)
+ ----------------- ------------- +
| Tables_in_PolicyDB |
+ ------------------------------ +
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_migrations |
| policytracker_country |
| policytracker_events |
| policytracker_policy_user |
| policytracker_website |
| policytracker_website_filter |
+ ------------------------------ +
在'policytracker'之前移動'policytracker.policy_detail'模型類。政策」類
NameError:名字 '政策' 沒有定義
遷回來
P3 manage.py makemigrations
沒有變化來檢測
P3 manage.py遷移
「表 'policytracker_country' 已存在「
...我們走完了一圈 - 看到第一條錯誤信息
我在做什麼錯了?這裏的模型:
class Website_Filter(models.Model): ...
class Language(models.Model):
iso_language = models.CharField(max_length = 2, primary_key=True)
flag_image_filename = models.CharField(max_length = 10, default='en.png')
nav_section_policy_list_title = models.CharField(max_length = 30, default='Policies')
...
class Country(models.Model):
language_country_code = models.CharField(max_length = 5, primary_key=True, default="en/ca")
country_name = models.CharField(max_length = 50)
class Policy(models.Model):
image_filename = models.CharField(max_length = 30)
start_date = models.DateField(default = None)
languages = models.ManyToManyField(Language, through="Policy_Detail")
countries = models.ManyToManyField(Country)
class Policy_Detail(models.Model):
policy = models.ForeignKey(Policy)
language = models.ForeignKey(Language)
needs_translation = models.BooleanField(default = True)
name = models.CharField(max_length = 50)
description1 = models.TextField()
description2 = models.TextField()
description3 = models.TextField()
twitter_handle = models.CharField(max_length = 30, default='')
subreddit = models.CharField(max_length = 30, default='')
class Website(models.Model):
name = models.CharField(max_length = 20, unique=True)
ip_address = models.GenericIPAddressField()
link = models.CharField(max_length = 50)
is_pending = models.BooleanField()
is_allowed = models.BooleanField()
class Official_Site(Website):
policy = models.ForeignKey(Policy_Detail)
class Interviews(Website):
policy = models.ForeignKey(Policy_Detail)
class Frequently_Asked_Questions(Website):
policy = models.ForeignKey(Policy_Detail)
class Articles(Website):
policy = models.ForeignKey(Policy_Detail)
class Books(Website):
policy = models.ForeignKey(Policy_Detail)
class Petitions(Website):
policy = models.ForeignKey(Policy_Detail)
class Actions(Website):
policy = models.ForeignKey(Policy_Detail)
class Rallies(Website):
policy = models.ForeignKey(Policy_Detail)
class Events(models.Model):
policy = models.ForeignKey(Policy_Detail)
event_date = models.DateField(null=True)
...
class Policy_User(models.Model):
country = models.ForeignKey(Country)
username = models.CharField(max_length = 30, default="Anonymous")
class Vote(models.Model):
policy = models.ForeignKey(Policy)
p_user = models.ForeignKey(Policy_User)
voting_date = models.DateField(auto_now_add = True)
week_number = models.IntegerField(default = 1)
vote_code = models.IntegerField(default = 1)
感謝您幫助。
是,多個多對多的關係可能在一個類中。你能更具體地說明你遇到了什麼樣的麻煩嗎?什麼是你正在得到的確切的錯誤信息,以及'實施'具體是指什麼?你想做什麼? – ChidG
@ChidG查看已編輯的問題 –
@ChidG在我的Policy類中,我將models = Many.ManyField(Language,through =「Policy_Detail」)更改爲models.ManyToManyField(Language,through =「PolicyLanguage」),運行p3 makemigrations,p3 migrate出現錯誤: django.db.utils.ProgrammingError:(1146,「Table'PolicyDB.policytracker_policy_detail'does not exist」) –