在Python / Django中更改MySQL中同一列的每一行的值?

时间:2013-04-04 07:24:42

标签: python mysql django

我在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'。因此,如果用户选中Make默认,我希望将之前的值更改为'True'。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分: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文档中看到“Extending the existing User model”部分。

答案 1 :(得分: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()

    .................