Django中是否有任何函数用于测试模型的字段实例是否为主键?

问题描述:

在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),评论于2016年10月31日,由yerihyo发表。我在[链接]中的相关问题(https://stackoverflow.com/questions/46779674/setting-django-model-primary-key-field-for-translation-with-django-modeltranslat)。 – Caco

您可以使用get_fieldmodel meta api,然后检查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,请更正第二行代码。我认为你的意思是'field = MyModel._meta.get_field(field_name)',对吗? – Caco

+0

我不明白您的第一条评论 - ['get_field'](https://docs.djangoproject.com/en/1.11/ref/models/meta/#django.db.models.options.Options.get_field)需要一个参数'field_name',所以我不确定你在问什么m2m字段。 – Alasdair