如何在模型中使django的选择选项动态化

时间:2016-01-03 19:36:32

标签: python django django-models

我正在django中创建一个引用词典。词典是从一种语言到另一种语言的某些领域的翻译。

词典是这样的:'id','lng1','lng2','lng3' 我有一个模型在其中一个字段中使用词典。

class lexicon(models.Model):
    lng1 = model.Charfield(max_length=255)
    lng2 = model.Charfield(max_length=255)
    lng3 = model.Charfield(max_length=255)

lexicon_choices = (
  (lng1=lng1),
  (lng2=lng2),
  (lng3=lng3)
)


class model(models:Model):
    model_name = model.Charfield(max_length=255, unique)
    field1 = model.Charfield(max_length=3,CHOICES=lexicon_choices)

这项工作正常,但我想知道,有没有办法从class lexicon中收集列名并将它们作为class model的选项移植?我是第一次使用Django Rest Framework,我想确保正确lng

由于

2 个答案:

答案 0 :(得分:1)

您可以在ForeignKey课程中使用lexicon到您的主模型。这将确保一对多的关系。您可以将值存储在数据库中。

答案 1 :(得分:0)

是的,可能。但在admin.py

class CustomForm(forms.ModelForm):
    class Meta:
        model = YourModel

    def __init__(self, *args, **kwargs):
        super(CustomForm, self).__init__(*args, **kwargs)
        choices = [(x.id, x.name) for x in Lexicon.objects.all()]
        self.fields['field1'].choices = choices

class YourModelAdmin(admin.ModelAdmin):
    form = CustomForm

您的原始模型如下:

class YourModel(models:Model):
    model_name = model.Charfield(max_length=255, unique)
    field1 = models.CharField(max_length=10, choices=(('--', '--'),))

重要使用小写命名您的类名。 ;)