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. 一个用户只能有一个make_default,即'on'每个用户只能有一个。'True'因此,如果用户选中 Make default,我想将先前的值更改为 on。我怎样才能做到这一点?

4

2 回答 2

0

我是这样理解你的问题的:每个用户最多可以有一个Source_info作为他们的默认值。因此,当用户选择 Source_info作为默认设置时,您希望取消选择该用户的所有其他选项。

您遇到困难的原因是您的模型设置错误。如果每个用户最多有一个默认值Source_info,那么您需要将其作为用户模型上的外键,而不是模型上的标志Source_info。所以你应该改写:

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

(如果每个用户都只有一个默认值Source_info,那么您可以省略null = True.)

如果有User问题的模型是来自的模型django.contrib.auth,那么您应该看到Django 文档中的“扩展现有用户模型”部分。

于 2013-04-04T08:54:28.847 回答
0
def your_view(request, id):
    #change the current make_default into False
    default = SourceInfo.objects.get(user=request.user, make_default=True)
    default.make_default = False
    default.save()

    #the new make_default for user
    source = get_object_or_404(SourceInfo, pk=id)
    source.make_default = True
    source.save()

    .................
于 2013-04-04T09:06:50.343 回答