Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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视图中为实例设置默认值_Python_Django - Fatal编程技术网

Python 在django视图中为实例设置默认值

Python 在django视图中为实例设置默认值,python,django,Python,Django,我使用简单的历史记录在我的模型上跟踪历史记录,效果很好。问题是,对模型所做的一些更改是由应用程序完成的,因此没有历史记录\u用户,因此返回null。在这种情况下,我从API获得的结果如下。我正在尝试为那些有id的用户返回history\u用户的id,并将null设置为特定id,例如1。但我有点挣扎。我添加了一个函数get\u history\u user,在值为空时返回1。但是代码只是运行并返回初始结果,没有错误。这样行吗?我做错了什么 编辑 我已经设法使函数工作,它按预期返回1。但是返回发票历

我使用简单的历史记录在我的模型上跟踪历史记录,效果很好。问题是,对模型所做的一些更改是由应用程序完成的,因此没有
历史记录\u用户
,因此返回null。在这种情况下,我从API获得的结果如下。我正在尝试为那些有id的用户返回
history\u用户的id
,并将null设置为特定id,例如1。但我有点挣扎。我添加了一个函数
get\u history\u user
,在值为空时返回1。但是代码只是运行并返回初始结果,没有错误。这样行吗?我做错了什么

编辑 我已经设法使函数工作,它按预期返回1。但是返回发票历史记录仍然返回空值,如下所示。我需要一些帮助来调整它,以便
invoice\u history
从函数中选择
history\u用户
,并将其附加到结果中

{
    "history_id": 509,
    "history_user": null,
    "history_type": "+",
    "history_date": "2021-05-03T16:17:53.558643+03:00",
    "id": 976
}
Views.py

class AllHistoryView(APIView):
def get(自我、请求、格式=无):
all\u invhist=Invoice.history.all()
serializers=InvoiceHistorySerializer(all\u invhist,many=True)
尝试:
结果={}
res=serializers.data
#结果=res
发票_历史记录=res[0]
def获取历史记录用户(发票历史记录):
历史记录用户=发票历史记录[“历史记录用户”]
如果isinstance(历史用户,(浮点,int)):
返回用户的历史记录
返回1#使用1代替null
rez=获取历史记录用户(发票历史记录)#rez打印1
返回响应(发票历史记录,状态=状态。HTTP\u 200\u确定)
例外情况除外,如e:
错误=getattr(e,“消息”,repr(e))
打印(错误)
结果[“错误”]=错误
结果[“状态”]=“错误”
返回响应(结果,状态=status.HTTP\u 400\u错误请求)

从这里我可以看出,您似乎正在尝试获取第一个
历史用户的id(如果存在)。您可以在不序列化和反序列化对象的情况下实现这一点

class AllHistoryView(APIView):
def get(自我、请求、格式=无):
inv_first=发票.history.all().first()
如果inv_first不是无:
返回响应(inv_first.history_user.pk)#默认状态码为200
其他:
返回响应(1,status=status.HTTP\u 400\u BAD\u请求)