私のモデルファイルは正常に動作します。できるだけ早く私はmymodelという持つすべてのmodels.Model(models.Modelの子クラス)に置き換えると、私のモデルの一つは、djangoに2つ以上の外部キーエラーがあります
<class 'puppy.cms.models.Appearance'> has more than 1 ForeignKey to <class 'puppy.cms.models.Segment'>
例外が発生します。子クラスで唯一行っていることは、クリーンメソッドをオーバーライドすることです。
私は間違っていますか?エラーをスロー
class SansHashUrl(object):
""" Upon each call to clean, iterates over every field,
and deletes all '#/' and '#!/' occurances.
IMPORTANT: This mixin must be listed first in the inheritance list to work
properly. """
def clean(self):
attrs = (field.attname for field in self.__class__._meta.fields
if isinstance(field, models.CharField)
or isinstance(field, models.TextField))
for attr in attrs:
attr_value = self.__getattribute__(attr)
tokens = attr_value.split()
for i, token in enumerate(tokens):
if has_internal_domain(token):
suggested_url = re.sub('#!?/','', token)
tokens[i] = suggested_url
self.__setattr__(attr, ' '.join(tokens))
class MyModel(SansHashUrl, models.Model):
pass
モデル:基準で
class Appearance(MyModel):
appearance_type = models.CharField(max_length=20,
choices=APPEARANCE_TYPE_CHOICES)
person = models.ForeignKey(Person, related_name='person_appearance')
item = models.ForeignKey(ManagedItem)
class Meta:
unique_together = (('person', 'item'),)
def __unicode__(self):
return self.person.__unicode__()
に:
class Segment(Story, HasStatsTags, HasFullUrl):
...
ストーリーManagedItem(mymodelというのサブクラス)のサブクラスであることに留意することが有用かもしれません。
本当に各属性を繰り返し処理しますか?なぜこれをカスタムフィールドにしないのですか?あなたの外来のキー/整数フィールドの上でこれを実行するのは本当に意味がありません... – sdolan