小编Rah*_*rma的帖子

用相同的键组合两个或多个字典

我有两个字典项目u_items

items = {"A": 1, "B": 2, "C": 3}

u_items = {"D": 4, "B": 4, "E": 8, "C": 4}
Run Code Online (Sandbox Code Playgroud)

我想用u_items更新项目字典,所以我这样做了

items.update((k + '_1' if k in items else k, v) for k, v in u_items.items())
Run Code Online (Sandbox Code Playgroud)

这样我就可以区分两个字典的键

输出:

items = {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'B_1': 4, 'E': 8, 'C_1': 4}
Run Code Online (Sandbox Code Playgroud)

但是当我用另一个字典更新项目字典时,假设n_items,它将替换B_1的值而不是使其变为B_1_1

n_items = {"C":7, "B":9}

items.update((k + '_1' if k in items else k, v) for k, v in n_items.items())
Run Code Online (Sandbox Code Playgroud)

输出:

{'A': 1, 'B': …
Run Code Online (Sandbox Code Playgroud)

python dictionary list-comprehension python-3.x

5
推荐指数
1
解决办法
93
查看次数

Django 按小时/天分组

我有一个模型:

模型.py

class DispatchPlan(models.Model):
    total_trucks = models.IntegerField(default=0)
    material_type = models.CharField(max_length=255, default=0, choices=mtypes)
    scheduled_date = models.DateTimeField(max_length=255, default=0)
    offered_price = models.IntegerField(default=0)
    weight = models.IntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)

我正在尝试绘制预定日期和体重之间的图表。我想按小时和相应的重量对时间戳进行分组。我怎样才能做到这一点?

在 SQl 中它就像.groupby('scheduled_date)但因为它是一个时间戳,我不认为它是相同的

应该是这样的:

data = DispatchPlan.objects.all().groupby('scheduled_date')
Run Code Online (Sandbox Code Playgroud)

我使用 postgres 作为我的数据库。

编辑:我尝试过的

dataset = DispatchPlan.objects.annotate(month=TruncMonth('scheduled_date')).values('month').annotate(c=sum('weight')).values('month', 'c')
Run Code Online (Sandbox Code Playgroud)

错误:

类型错误:+ 不支持的操作数类型:“int”和“str”

python django orm

4
推荐指数
1
解决办法
2650
查看次数

在 Django Rest Framework 中通过 URL 中的 pk 获取对象

我想通过 URL 中的“pk”从 ORM 检索对象。这就是我正在尝试的

这是我的网址:

path('api/dispatchhistoryitem/<int:pk>/', views.dispatchhistoryitemsview.as_view(), 'dispatchhistoryitem'),
Run Code Online (Sandbox Code Playgroud)

视图.py

class dispatchhistoryitemsview(ListAPIView):
    queryset = ItemBatch.objects.all()
    serializer_class = holdSerializer

    def get(self, request, pk, *args, **kwargs):
        items = get_object_or_404(ItemBatch, id=self.kwargs.get('pk'))
        serializer = holdSerializer(items)
        return Response(serializer.data)
Run Code Online (Sandbox Code Playgroud)

序列化器.py

class holdSerializer(serializers.ModelSerializer):
    class Meta:
        model = ItemBatch
        fields = "__all__"
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时它说:

/api/dispatchhistoryitem/43/处的值错误

字典更新序列元素#0的长度为1;需要 2 个

我在这里做错了什么?请帮忙!

django django-rest-framework

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

Yarn 安装抛出错误:gyp 动词 `which` 失败错误:未找到:python2

在 React 项目中,我尝试运行“yarn install”,但它抛出以下错误:

\n
\n

gyp 动词which失败错误:未找到:python2

\n
\n

完整错误回溯:

\n
yarn install v1.22.4\nwarning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.\n[1/4] Resolving packages...\n[2/4] Fetching packages...\ninfo fsevents@2.1.2: The platform "win32" is incompatible with this module.\ninfo "fsevents@2.1.2" is an optional dependency and failed compatibility check. Excluding it from …
Run Code Online (Sandbox Code Playgroud)

node.js reactjs node-sass yarnpkg

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

Django 模型导入错误:ValueError:尝试在顶级包之外进行相对导入

我在我的 django 项目中创建了一个新的应用程序“grn”,并尝试从同一个项目中名为“packsapp”的另一个应用程序导入模型,如下所示:

模型.py

from ..packsapp.models import *
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

ValueError:尝试在顶级包之外进行相对导入

这是应用程序的结构:

yantra_packs

grn
--migrations
    __init__.py
    admin.py
    apps.py
    models.py
    tests.py
    views.py
media
packsapp
--migrations
  templates
  templatetags
  views1
    __init__.py
    apps.py
    decorators.py
    forms.py
    models.py
    urls.py
    views.py
Run Code Online (Sandbox Code Playgroud)

如何导入的模型packsappgrn

django django-models

2
推荐指数
1
解决办法
1534
查看次数

SlugRelatedField Django Rest Framework 中的多个 slug_field

在我的 Django 应用程序中,我得到这样的 Json:

    "sales_order": 102, 
    "transport_by": 4, 
Run Code Online (Sandbox Code Playgroud)

我想扩展sales_order并将其替换为其所有者的first_name+ last_name。所以我尝试使用 slug 相关字段,但我不确定如何从中获取两个值。

这是我尝试过的:

class AtableSOSerializer(serializers.ModelSerializer):

    owner = serializers.SlugRelatedField(read_only=True, slug_field='first_name'+' '+'last_name')

    class Meta:
        model = MaterialRequest
        fields = "__all__"


class AtableFlowListSerializer(serializers.ModelSerializer):

    class Meta:
        model = AllotmentFlow
        fields = "__all__"


class AllotmentTableSerializer(serializers.ModelSerializer):

    flows = AtableFlowListSerializer(many=True)
    sales_order = AtableSOSerializer(read_only=True)

    class Meta:
        model = Allotment
        fields = "__all__"
Run Code Online (Sandbox Code Playgroud)

但出现了明显的错误:

AttributeError:“用户”对象没有属性“名字姓氏”

如何获取 JSON 中的名字 + 姓氏?

django django-rest-framework

2
推荐指数
1
解决办法
2104
查看次数

在另一个数据框中搜索数据框列

我有两个如下所示的数据框:

df1:

   foo
0    2
1   11
2   18
3    6
4   14
5   12
6    8
7   13
8    7
9    5
Run Code Online (Sandbox Code Playgroud)

df2:

   bar   date
0    2   06-01-2020
1    5   06-01-2020
2    7   06-01-2020
3    8   06-01-2020
4    3   06-01-2020
Run Code Online (Sandbox Code Playgroud)

foo我想搜索in的值bar,如果有匹配项,则在 in 的另一列中更新它df1

预期输出:

   foo result   date
0    2   True   06-01-2020
1   11  False   24-08-2020
2   18  False   24-08-2020
3    6  False   24-08-2020
4   14  False   24-08-2020
5   12  False   24-08-2020
6    8   True   06-01-2020 …
Run Code Online (Sandbox Code Playgroud)

python pandas

2
推荐指数
1
解决办法
1865
查看次数

从列表列表创建字典

我有一个listlist就像如下:

a =  [['Product', 'Q', 'QA', 'Status'], 
      ['PS001', 500, 200, 'Good'], ['PS002', 400, 100, 'Bad']]
Run Code Online (Sandbox Code Playgroud)

我想创建一个如下所示listdicts:

new_list = [{'Product':'PS001', 'Q':500, 'QA':200, 'Status':'Good'},
            {'Product':'PS002', 'Q':400, 'QA':100, 'Status':'Bad'}]
Run Code Online (Sandbox Code Playgroud)

我用空值temp_dict的键创建了一个dict

temp_dict = {}
for i in range(len_0):
    temp_dict[a[0][i]] = ''
Run Code Online (Sandbox Code Playgroud)

如何附加a[1:]in的值dict并将它们进一步附加到 a list

我试过这个:

new_list = []
for i in a[1:]:
    for j in i:
        for m,n in temp_dict.items():
            temp_dict[m]=j
        new_list.append(temp_dict)
Run Code Online (Sandbox Code Playgroud)

但结果如下:

[{'Product': 'Bad', 'Q': 'Bad', …
Run Code Online (Sandbox Code Playgroud)

python dictionary list

2
推荐指数
1
解决办法
101
查看次数

由于 JavaScript 堆内存不足,AWS amplify 上的 React 应用程序构建失败

我尝试在 AWS Amplify 上部署 React 应用程序,但收到以下错误:

Creating an optimized production build...
2023-01-05T07:21:24.092Z [WARNING]: <--- Last few GCs --->
                                    [3710:0x48877c0]   225822 ms: Scavenge 1576.7 (1958.9) -> 1544.8 (1928.0) MB, 5.2 / 0.0 ms  (average mu = 0.652, current mu = 0.467) allocation failure
                                    [3710:0x48877c0]   226651 ms: Mark-sweep 1681.0 (2063.6) -> 1665.9 (1998.4) MB, 734.4 / 0.0 ms  (average mu = 0.538, current mu = 0.316) allocation failure scavenge might not succeed
                                    [3710:0x48877c0]   226745 ms: Scavenge 1683.9 (2004.2) -> 1668.2 (2000.4) MB, …
Run Code Online (Sandbox Code Playgroud)

reactjs aws-amplify

2
推荐指数
1
解决办法
1775
查看次数

Django Rest Framework中的OTP验证

我正在尝试制作一个 django 应用程序,我想在其中创建一个 opt 验证,但我很困惑什么是正确的方法。这是我到目前为止所做的:

模型.py

class User(AbstractUser):
    is_shipper = models.BooleanField(default=False)
    is_ftlsupp = models.BooleanField(default=False)
    is_ptlsupp = models.BooleanField(default=False)
    otp = models.IntegerField(default=1620122)
    verified = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)

序列化器.py

class UserSerializer(serializers.ModelSerializer):
    password = serializers.CharField(write_only=True)

    class Meta:
        model = User
        fields = "__all__"
        read_only_fields = ('id', 'verified')

    def create(self, validated_data):
        user = super(UserSerializer, self).create(validated_data)
        user.set_password(validated_data['password'])

        def random_with_N_digits(n):
            range_start = 10**(n-1)
            range_end = (10**n)-1
            return randint(range_start, range_end)

        otp = random_with_N_digits(6)
        user.otp = otp
        user.save()

        subject = 'Please Confirm Your Account'
        message = 'Your 6 Digit Verification Pin: …
Run Code Online (Sandbox Code Playgroud)

python django one-time-password django-rest-framework

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