0

私はDjangoでこのようなモデルを持っています:

class Source_info(models.Model):
    user = models.ForeignKey(User)
    session_name = models.TextField()
    server_uname_path = models.TextField()
    server_name = models.TextField()
    server_fullpath = models.TextField()
    source_username = models.TextField()
    make_default = models.TextField()

次のように make_default 値を取得します。

make_default = request.POST.get('make_default', True)

ユーザーが make_default 値をチェックする場合'on'、それ以外の場合はTrueです。1 人のユーザーが持つことができる make_default は 1 つだけです。つまり、'on'ユーザーごとに 1 つだけです。'True'したがって、ユーザーが Make default をオンにした場合、以前の値を on から変更したいと思います。どうすればそれを達成できますか?

4

2 に答える 2

0

あなたの質問を私がどのように理解するかは次のとおりです。各ユーザーは、最大で 1 つSource_infoをデフォルトとして持つことができます。したがって、ユーザーがこれをデフォルトとして選択すると、そのユーザーの 他のSource_infoすべての選択を解除したいと思うでしょう。

これが難しいのは、モデルの設定が間違っているからです。各ユーザーが最大で 1 つのデフォルトを持っている場合、これをモデルのフラグではなく、ユーザーSource_infoモデルの外部キーにする必要があります。したがって、代わりに次のように書く必要があります。Source_info

class User(models.Model):
    # ... other fields ...
    default_source_info = models.ForeignKey('Source_info', null = True)

(すべてのユーザーに1 つのデフォルトがある場合は、省略できます )Source_infonull = True

User問題のモデルが のモデルである場合は、Django ドキュメントの「既存のユーザー モデルの拡張django.contrib.auth」セクションを参照してください。

于 2013-04-04T08:54:28.847 に答える