単一クラスで多対多リレーションシップを複数使用できますか?ここに私の考えです:Django複数対多関係が動作しない
政策は、多くの言語
A言語に翻訳することができ、国が(でも、複数の言語で)多くの政策
政策は、多くの中で議論することができますを一覧表示することができ、多くの政策
を一覧表示することができます国
私はdjango、python3、mysqlを使用しています。私は円で行きます。多対多の関係が問題のようです。テーブルスルー多くの
多くは動作しない。 言語= models.ManyToManyField
円形のエラーメッセージの手順(言語、= "Policy_Detail" を通じて):
別名P3 = "のpython3"
django.db.utils.OperationalError:P3 manage.py
エラーメッセージ移行(1050 "テーブル 'policytracker_country' はすでに存在している")を滴下
policytracker_countryおよび他のすべてのpolicytrackerテーブル
P3のmanage.pyで入力は、マイグレーションを作る
変更は
(1051年、 "不明なテーブル 'PolicyDB.policytracker_flag'")
を検出しません
mysql> show tables;
+ ------------------------------ +
| Tables_in_PolicyDB |
+ ------------------------------ +
| policytracker_country |
| policytracker_events |
| policytracker_policy_user |
| policytracker_website |
|ポリシートラッカーのウェブサイトフィルタ|
+ ------------------------------ +
はpolicytracker_flagとMySQL を用いpolicytracker_label_links(にもかかわらず添加Iドン
他のすべてのポリシートラッカーテーブルを削除しました
+ --------------------------- - +
| Tables_in_PolicyDB |
+ ---------------------------- +
| policytracker_flag |
| policytracker_label_links |
+ ---------------------------- +
P3 manage.py makemigrations
変化は
が検出されませんp3を管理します。+ -----------------(1146年、 "テーブル 'PolicyDB.policytracker_policy_detail' が存在しません")
:PY
django.db.utils.ProgrammingErrorを移行------------- +
| 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.policy_detail'モデルクラスを 'policytrackerの前に移動しました。ポリシー」クラス
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)
感謝のために。
はい、1つのクラスで複数の多数の関係が可能です。あなたはあなたがどんな問題を抱えているのか、より具体的になりますか?あなたが得ている正確なエラーメッセージは何ですか?具体的には「実装する」ことによって何を意味していますか?あなたは何をしようとしているのですか? – ChidG
@ChidG編集された質問を見る –
@ChidG私のポリシークラスでは、models.ManyToManyField(Language、through = "PolicyLanguage")にlanguage = models.ManyToManyField(言語、through = "Policy_Detail")を変更し、p3を実行し、p3を移行し、エラーが発生しました: django.db.utils.ProgrammingError:(1146、 "'PolicyDB.policytracker_policy_detail'テーブルが存在しません) –