我试图修改我的get_success_url,如果有任何kwargs传递给它,我可以使用它们构建返回的URL.
以下是我到目前为止的情况:
class CalcUpdate(SuccessMessageMixin, UpdateView):
model = Calc
template_name = 'calc/cru_template.html'
form_class = CalcForm
def archive_calc(self, object_id):
model_a = Calc.objects.get(id = object_id)
model_b = Calc()
for field in model_a._meta.fields:
setattr(model_b, field.name, getattr(model_a, field.name))
model_b.pk = None
model_b.save()
self.get_success_url(idnumber = model_b.pk)
def form_valid(self, form):
#objects
if self.object.checked == True:
object_id = self.object.id
self.archive_calc(object_id)
#save
def get_success_url(self, **kwargs):
if kwargs != None:
return reverse_lazy('detail', kwargs = {'pk': kwargs['idnumber']})
else:
return reverse_lazy('detail', args = (self.object.id,))
Run Code Online (Sandbox Code Playgroud)
到目前为止,这只是keyerror详细介绍'idnumber' …
我有以下代码,它将一个现有实例复制并“归档”到另一个模型中,然后删除它,并用草稿副本替换它。
当前代码
def archive_calc(self, rev_num, primary_field):
model_a = Calc.objects.get(tag_number__tag_number = primary_field, revision_number = rev_num) #Current Revision instance
model_b = CalcArchive() #Draft instance
#Copies data to archive model
for field in model_a._meta.fields:
setattr(model_b, field.name, getattr(model_a, field.name))
model_b.pk = None
model_b.current_revision = False
model_b.save()
model_a.delete()
Run Code Online (Sandbox Code Playgroud)
效果很好,但是我需要更改系统以允许某些带有外键的模型,因为当实例被存档/删除时,相关记录也随之删除。因此,解决此问题的想法是将草稿记录中的更改复制到先前的记录中,然后删除草稿,从而维护与外键相关的记录。
解决思路
def archive_calc(self, rev_num, primary_field):
model_a = Calc.objects.get(tag_number__tag_number = primary_field, revision_number = rev_num) #Current Revision instance
model_b = CalcArchive() #Archive Instance
model_c = Calc.objects.get(pk = self.object.pk) #Draft instance
#Copies data to archive model
for field in …Run Code Online (Sandbox Code Playgroud) 我正在尝试验证传入的 webhook,到目前为止,生成的哈希与 api 生成的测试哈希不匹配。
文档列出了以下 Ruby 示例,但是我使用的是 Python/Django,因此对于“转换”此函数的任何帮助将不胜感激!
# request_signature - the signature sent in Webhook-Signature
# request_body - the JSON body of the webhook request
# secret - the secret for the webhook endpoint
require "openssl"
digest = OpenSSL::Digest.new("sha256")
calculated_signature = OpenSSL::HMAC.hexdigest(digest, secret, request_body)
if calculated_signature == request_signature
# Signature ok!
else
# Invalid signature. Ignore the webhook and return 498 Token Invalid
end
Run Code Online (Sandbox Code Playgroud)
这大致是我到目前为止使用https://docs.python.org/3/library/hashlib.html整理的内容。
import hashlib
secret = "xxxxxxxxxxxxxxxxxx"
json_data = {json data}
h …Run Code Online (Sandbox Code Playgroud)