私が獲得しようとしている構造は、 FooモデルとFooxモデルがあります。フィールドのように動作するdjangoモデルのメソッド
class Foo(models.Model):
...
class Foox(models.Model):
foo = models.Foreignkey(Foo)
stext = models.CharField(max_length=80, verbose_name='description')
langu = models.ForeignKey(Langutable, verbose_name='Language')
私は
は{{私が使用Foo.stextを貸し付け、STEXTフィールドFooxモデル、 私はアクティブ(EN)言語を使用して、Fooのモデルを持っており、テンプレートやコードにはFooのSTEXTフィールドを使用します}}テンプレート内にあります。値は、 Foox.objects.get(foo = foo、langu = 'en')。values( 'stext')[0] ['stext']を使用して決定されます。
私のコードにfoo.stext 。私のモデルは、stextがFooxモデルからの属性であることを知っていなければなりません。
はこれまでのところ、私はdef __unicode__(self):
stext = ''
try:
from panbas.models import Langutable
langu = Langutable.objects.get(langu='en')
xtablelookup = '{}{}'.format(self.__class__.__name__.lower(), 'x')
if xtablelookup in model_util.get_one_to_many_field_names(self.__class__):#I check if there is a Foox model, model_util function does that, returns ['foox']
stext = self.foox_set.filter(langu=langu).values('stext')[0]['stext']
except:
pass
return '{} {}'.format(self.short_cut, stext)#finally stext came from foox table.
は私のアプローチは正しいです私のUnicodeのこのコードの下に使用を達成し、それを行うには良い方法があります。私は実際にフィールドを定義する方法が必要で、他のモデルに照会します。 dbには存在しません。ちょうどプレースホルダまたは何か。
私たちはモデルマネージャーとクラスメソッドを持っています。私はそれを理解できません。
私は他の多国間アプローチを知っています。私はそれらを使用するよう勧めません。
それ以外の場合は、ユニコードバージョンを取得するたびにインポートされますが、これはおそらく非効率です。 –
ありがとう@PaulCollingwood、ちょうど実験と私はこのアプローチを使用することを決めた場合は書き直されます。 – durdenk
[プロパティ](https://docs.python.org/3/library/functions.html#property)のように聞こえます。 –