Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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
Django自动场增量_Django_Django Models - Fatal编程技术网

Django自动场增量

Django自动场增量,django,django-models,Django,Django Models,我想自动增加一个不是主键的model字段对话id。 目前,我正在使用以下代码行,这是非常低效的 web_query_data = WebQuery.objects.all() if not web_query_data: c_id = 0 else: for data in web_query_data: c_id = data.conversation_id w

我想自动增加一个不是主键的model字段
对话id
。 目前,我正在使用以下代码行,这是非常低效的

web_query_data = WebQuery.objects.all()

        if not web_query_data:
            c_id = 0
        else:
            for data in web_query_data:
                c_id = data.conversation_id


        web_query = WebQuery.objects.create(user_id = request.user.id, sent_to = selected_users, 
                                            user_query = query,date_time = date_time, conversation_id = c_id + 1)
它基本上使用循环获取字段
conversation\u id
的最后一个值,并将其递增1

我尝试使用
models.Autofield
,它要求字段是主字段。但根据我的需要,我需要插入一个数据,该数据有时会复制到
对话\u id


有没有更好、更有效的方法?您可以从这里获取最后一个对象和增量:

query = WebQuery.objects.all().order_by("-id")[0]
new_query = WebQuery.objects.create(user_id = request.user.id,
                                    sent_to = selected_users,
                                    user_query = query,
                                    date_time = date_time,
                                    conversation_id = query.conversation_id + 1)
(假设“id”是
WebQuery
模型的主键)


不过,我不知道是否有一种方法可以在Django模型中自动执行此操作。

嗯,这其中有一个bug。如果最初我在WebQuery中没有任何数据,那么它会抛出一个超出范围的错误
list index
WebQuery.objects.aggregate(Max('id'))将返回一个包含最大值的dict