0

私はモデルを持っています:

class SettingField(models.Model):
    name = models.CharField(max_length=200)
    value = models.TextField(max_length=200)

    [...]

class Setting(models.Model):
    setting_type = models.CharField(max_length=1, choices=STYPES)
    fields = models.ManyToManyField(SettingField, null=True)

    [...]

そしてフォーム:

class SettingsForm(forms.Form):
    login = forms.CharField(
        required=True,
        label=u'Login'
        )
    password = forms.CharField(
        widget=forms.PasswordInput,
        required=True,
        label=u'Password'
        )

ビューで私は持っています:

if request.method == 'POST':
    form = SettingsForm(request.POST)
    if form.is_valid():
        setting = Setting()
        setting.setting_type = 'd'
        setting.save()
        for ff in form.fields:
            setting_field = SettingField()
            setting_field.name = ff
            setting_field.value = form.cleaned_data[ff]
            setting_field.save()
            setting.fields.add(setting_field)

これは、フォームに依存するカスタム フィールドの設定を保存します。しかし今、私はこのデータを取得したい:

s_objs = Setting.objects.filter(setting_type='d')

logins = list()

for so in s_objs:
    logins.append({
        "login": so.fields.??? what here ???,
        "password": so.fields.??? what here ???
    })

どうやってするの?ループを使用して名前を比較することもできますが、別の方法があるかもしれません。

4

1 に答える 1