2017-10-17 10 views
1

Djangoでは、モデルフィールドが主キー(pk)かどうかをテストする方法(関数)はありますか?モデルのフィールドインスタンスが主キーであるかどうかをテストするDjangoの関数はありますか?

例えば、私のモデルは次のとおりです。主キーである名前をテストするための機能が

class Gender(models.Model): 
    name = models.CharField(max_length=50, primary_key=True) 

    def __str__(self): 
     return self.name 

ありますか?

+3

なぜ知っておく必要がありますか?ユースケースは何ですか? –

+0

これは別の問題に関連しています。 'django-modeltranslation'パッケージの主キーフィールドの翻訳を扱うことができるようにするためです。 [link](https://github.com/deschler/django-modeltranslation/issues/144)の参考、yerihyoによる2016年10月31日のコメント私の関連する質問は[link](https://stackoverflow.com/questions/46779674/setting-django-model-primary-key-field-for-translation-with-django-modeltranslat)です。 – Caco

答えて

4

model meta apiget_fieldを使用して、primary_key属性をチェックします(プライマリキーの場合はTrue)。

field_name = 'name' 
field = MyModel._meta.get_field(field_name) 
field.primary_key 
+0

get_fieldメソッドの場合、別のパラメータ 'many_to_many'があります。ファイルがm2mフィールドの場合はどうなりますか? –

+0

@Alasdair、コードの2行目を修正してください。私はあなたが 'field = MyModel._meta.get_field(field_name)'を意味したと思います、そうですか? – Caco

+0

あなたの最初のコメントが分かりません - ['get_field'](https://docs.djangoproject.com/ja/1.11/ref/models/meta/#django.db.models.options.Options.get_field)あなたがm2mフィールドについて何を求めているのか分かりません。 – Alasdair

関連する問題