のジャンゴのManyToManyFieldで文字列を使用することはできませんは値を通じて
を私が使用しようとすると、Djangoは文句属性を使用して、私のManyToManyFieldで文字列:
File "/vagrant/flamingo_env/lib/python3.4/site-packages/django/db/models/fields/related.py", line 1366, in _check_relationship_model
for f in through._meta.fields:
AttributeError: 'str' object has no attribute '_meta'
使用法:
class Voter(models.Model):
# ...
addresses = models.ManyToManyField(Address, through='voter_addresses', through_fields=('voter_id', 'address_id'))
私はモデルを通じて作成した場合、エラーが消える:
class VoterAddress(models.Model):
voter_id = models.ForeignKey(Voter)
address_id = models.ForeignKey(Address)
class Meta:
db_table = 'voter_addresses'
しかしもちろん、Voterが定義されていないことを訴えています。私は単に順序を変更できません。そうしないとVoterAddressも定義されません。
すべての例では、使用される基本的な文字列のバージョンがわかりました。どうしたの?
いいね、Moses(+1) – marcusshep
これは、throughパラメータがテーブル名ではなくクラス名を取ることを意味しますか? – whiterook6
クラス名/モデル名。はい。あなたは明示的に名前を変更したいということを除いて、Djangoでテーブル名の管理について心配する必要はありません。 –