小编Lui*_*ana的帖子

来自外键选择的Django Admin自动填充数据

我正在寻找一种根据所选字段自动填充管理员中某些字段的方法。我在 Inline 中有一个外键字段,并希望在表单中实时显示来自当前选定对象的一些数据。

我的代码的简化版本来举例说明我在做什么:

# models.py

class Product(models.Model):
    code = models.CharField(max_length=6, default=0)
    name = models.CharField(max_length=25, null=True, blank=True)


class Provider(models.Model):
    code = models.CharField(max_length=6, default=0)
    name = models.CharField(max_length=25, null=True, blank=True)
    address = models.CharField(max_length=25, null=True, blank=True)


class ProductProvider(models.Model):
    product = models.ForeignKey(Product)
    provider = models.ForeignKey(Provider)
    cost = models.DecimalField(max_digits=6, decimal_places=2, default=0)
Run Code Online (Sandbox Code Playgroud)

我的管理类如下:

# admin.py

class ProductProviderInline(admin.TabularInline):
    model = ProductProvider
    fk_name = 'product'

    fields = ('provider', 'cost', 'provider_address')
    readonly_fields = ('provider_address',)
    extra = 1

    def provider_address(self, obj):
        return obj.provider.address


@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    model = Product
    list_display …
Run Code Online (Sandbox Code Playgroud)

javascript python django autofill django-admin

6
推荐指数
0
解决办法
1808
查看次数

在 Python 中使用 SHA256 对字节字符串进行签名

目前,我有一些代码使用本机 OpenSSL 二进制文件使用 SHA256 算法对字节字符串进行签名,该代码调用外部进程,发送参数,并将结果接收回 Python 代码。

当前代码如下:

signed_digest_proc = subprocess.Popen(
    ['openssl', 'dgst', '-sha256', '-sign', tmp_path],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE
)
signed_digest_proc.stdin.write(original_string)
signed_digest, _ = signed_digest_proc.communicate()

base64.encodestring(signed_digest).decode().replace('\n', '')
Run Code Online (Sandbox Code Playgroud)

original_string太大时,我可能会遇到结果问题(我认为来自与外部进程的通信),这就是为什么我试图将其更改为仅限 Python 的解决方案:

import hmac, hashlib
h = hmac.new(bytes(key_pem(), 'ASCII'), original_string, hashlib.sha256)
result = base64.encodestring(h).decode().replace('\n', '')
Run Code Online (Sandbox Code Playgroud)

这导致与第一个完全不同的字符串。

在不调用外部进程的情况下实现原始代码的方法是什么?

python encryption cryptography sha256 python-cryptography

3
推荐指数
1
解决办法
3269
查看次数