Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python/Django中更改MySQL中同一列的每一行的值?_Python_Mysql_Django - Fatal编程技术网

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

在Python/Django中更改MySQL中同一列的每一行的值?,python,mysql,django,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() s

我在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_默认值为:

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

如果用户检查make_,则默认值为
'on'
,否则为
True
。一个用户只能有一个默认值,即每个用户只能有一个
'on'
。因此,如果用户选中makedefault,我想将上一个值从on改为
'True'
。我怎样才能做到这一点

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

您在这方面遇到困难的原因是您的模型设置错误。如果每个用户最多有一个默认值
Source\u info
,则需要将其作为用户模型上的外键,而不是
Source\u info
模型上的标志。所以你应该写:

class User(models.Model):
    # ... other fields ...
    default_source_info = models.ForeignKey('Source_info', null = True)
(如果每个用户只有一个默认值
Source\u info
,则可以省略
null=True


如果所讨论的
用户
模型来自
django.contrib.auth
,那么您应该看到django文档中的“”部分。

我认为您应该将models.field更改为
make_default=models.BooleanField(default=True)
大多数字段使用
models.TextField()
,为什么?因为我懒得使用CharField和max_length。是的,我把它改成了BooleanField。我仍然想要我的案例。如果用户现在选择make_default,值将是1。我希望所有1的值都转移到0。是的,一个用户只能有一个默认值。没有名为Source_info的表来执行外键。我想在用户检查新的默认值时删除其他默认值。当你说“没有名为Source\u info的表来执行外键”时,你是什么意思?Source\u info从哪里来?默认的\u source\u info=models.ForeignKey(source\u info,null=True)
source\u info
是您在上面帖子中的模型类名称。根据定义模型的顺序,您可能需要对其进行报价。我编辑了我的答案以展示如何做。
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()

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