小编Mad*_*di7的帖子

如何在Postman中一次更改多个Url?

我在Postman集合中有10个以上的请求,每次在我的本地服务器和测试服务器上进行测试时,我必须手动将URL从"localhost:8000"更改为"test.mysite".有没有解决办法一次改变所有这些?

rest postman

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

How to add <tfoot> dynamically in jQuery DataTables?

Here is my code:-

function get_dataset(data){
    columns_1 = [{}];
    dataset = [];
    keys = Object.keys(data);
    arr = Object.keys(data[keys[0]]);
    for (i = 0; i < arr.length; i++) {
        columns_1.push({
            'title': arr[i],
        });
    }
    for (i = 0; i < keys.length; i++) {
        local_arr = [];
        local_arr.push(keys[i]);
        for (j = 0; j < arr.length; j++) {
            local_arr.push(data[keys[i]][arr[j]]);
        }
        dataset.push(local_arr);
    }
    return dataset
}

function handleReportSuccess(data) {
    var dataset = get_dataset(data);
    datatable = $('#restaurant_number_table').DataTable({
        data: dataset,
        columns: columns_1
    });
    $('.reviews-cont').show();
}
Run Code Online (Sandbox Code Playgroud)

Here is …

javascript jquery datatables

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

Django:类对象没有标准函数的属性

我有一个模特:

class Order(models.Model):

    STATUS_CHOICES = (
        (100, 'First'),
        (200, 'Second'),
    )
    status = models.IntegerField('Status', choices=STATUS_CHOICES)

    def accept(self):
        self.status = 200
        self.save()
        return self.status, self.get_status_display()
Run Code Online (Sandbox Code Playgroud)

我有一个单元测试:

class CustomTestCase(TestCase):

    @classmethod
    def setUp(self):
        pass

    @classmethod
    def save(self):
        pass


class OrderTest(CustomTestCase):

    def test_accept(self):
        result = Order.accept(self)
        expected = (200, 'Second')

        self.assertEqual(expected, result)
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我添加了"保存"功能,什么都不做,原因是因为没有自定义'保存'功能,我不断收到此错误:

[OrderTest]对象没有属性[保存]

如果对自定义"保存"功能有更好的解决方案,请告诉我.但是这种解决方案不适用于django内置的'get_status_display()'函数.没有解决方案,我一直遇到这个麻烦:

[OrderTest]对象没有属性[get_status_display]

我可以做些什么才能让我的工作变得我需要?

python django unit-testing

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

如何正确组织REST-API版本控制?

我正在Django-REST-FrameWork上构建网站的后端,目前我具有以下结构(以下显然只是其中的一部分):

project_root:
    apps:
        app1:
            models.py
            serializers.py
            views.py
            urls.py
        app2:
            models.py
            serializers.py
            views.py
            urls.py
    urls:
        urls.py - (Main project urls file)
Run Code Online (Sandbox Code Playgroud)

端点:

http://localhost:8000/api/app1/
http://localhost:8000/api/app2/
Run Code Online (Sandbox Code Playgroud)

如何添加版本控制?我应该为每个应用程序添加一个“ v2”文件夹吗?

django rest django-rest-framework

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

Django REST Framework过滤多个字段

楷模

class Task(Model):
    employee_owner = ForeignKey(Employee, on_delete=CASCADE)
    employee_doer = ForeignKey(Employee, on_delete=CASCADE)
Run Code Online (Sandbox Code Playgroud)

查看

class TaskViewSet(ModelViewSet):
    serializer_class = TaskSerializer
    queryset = Task.objects.all()
    filter_class = TaskFilter
Run Code Online (Sandbox Code Playgroud)

过滤

class TaskFilter(FilterSet):
    owner_id = NumberFilter(name='employee_owner__id')
    doer_id = NumberFilter(name='employee_doer__id')

    class Meta:
        model = Task
        fields = {
            'owner_id',
            'doer_id'
        }
Run Code Online (Sandbox Code Playgroud)

端点

http://localhost:8000/api/tasks?owner_id=1&doer_id=1
Run Code Online (Sandbox Code Playgroud)

(只给那些任务,其中ownerdoer是相同的员工)

http://localhost:8000/api/tasks?owner_id=1
Run Code Online (Sandbox Code Playgroud)

(仅给出owner特定员工和doer任何人的任务)

http://localhost:8000/api/tasks?doer_id=1
Run Code Online (Sandbox Code Playgroud)

(仅给出doer特定员工和owner任何人的任务)

我想要的是

我想要一个端点,如:

http://localhost:8000/api/tasks?both_id=1
Run Code Online (Sandbox Code Playgroud)

(这将给我以上3个端点的所有结果)

我想做django-filter过滤完全如下:

Task.objects.filter(
    Q(employee_owner__id=1) | Q(employee_doer__id=1)
)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?谢谢.

python django django-filter django-rest-framework

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

如何在一个模型中指定父子关系?

例如,我有以下代码:

class FamilyMember(models.Model):
    user = models.OneToOneField(User)
Run Code Online (Sandbox Code Playgroud)

我有以下情况:

a1 = FamilyMember.objects.get(id=1)
a1.first_name = 'John'
a1.last_name = 'Smith'
(a1 is a parent of a2)

a2 = FamilyMember.objects.get(id=2)
a2.first_name = 'Mark'
a2.last_name = 'Smith'
(a2 is a child of a1 and parent of a3 in the same time)

a3 = FamilyMember.objects.get(id=3)
a3.first_name = 'Jason'
a3.last_name = 'Smith'
(a3 is a child of a2)
Run Code Online (Sandbox Code Playgroud)

如何在一个模型中完成这种关系?

python django relationship

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

如何创建具有多对多父子关系的Django模型?

我已经知道,我可以在同一模型中实现ForeignKey父子关系,从而可以与1个parent =多个孩子创建关系。但是,如何在同一模型中完成多对多关系?此刻,我编写并测试了这一点:

class Person(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    parents = models.ManyToManyField(
        'self', blank=True
    )
Run Code Online (Sandbox Code Playgroud)

它可以工作,但不像我预期的那样。它的作用是:

john = Person.objects.get(id=1)
sam = Person.objects.get(id=2)

>>> john.parents.all()
<QuerySet [<Person: Alex>, <Person: Peter>, <Person: Sam>]>
>>> sam.parents.all()
<QuerySet [<Person: John>]>
Run Code Online (Sandbox Code Playgroud)

如您所见,Sam应该是John的孩子,而不是他的孩子和父母。我想要的是在检索sam.parents.all()时得到约翰,但不是在检索john.parents.all()时得到山姆。

有没有办法实现我想要的?还是至少不能使用这种逻辑?我是否必须使用同一应用程序创建第二个单独的模型?

python django relationship

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

为什么Python3.6的结果比3.7好?

我有以下代码(它无用,仅用于性能测试)

class A:
    def __init__(self, i):
        self.i = i

start = datetime.now()
foo = {}
for i in range(10000000):
    foo[i] = A(i)

print('\nSpent: [ {} ] seconds!'.format((datetime.now()-start).total_seconds()))
Run Code Online (Sandbox Code Playgroud)

事实是,当我用Python3.7运行它时,得到以下结果

Spent: [ 7.644764 ] seconds!
Run Code Online (Sandbox Code Playgroud)

但是当我用Python3.6运行它时

Spent: [ 6.521555 ] seconds!
Run Code Online (Sandbox Code Playgroud)

所以问题是,我是否会误解某些东西,还是旧版本的python速度更快,应该使用旧版本的python?

UPD:如评论中所建议,我使用了timeit模块,这里是结果

python3.7 -m timeit '"-".join(str(n) for n in range(2000000))'
1 loop, best of 5: 499 msec per loop

python3.6 -m timeit '"-".join(str(n) for n in range(2000000))'
10 loops, best of 3: 405 msec per loop
Run Code Online (Sandbox Code Playgroud)

的结果timeit对于3.7来说仍然不好,真的比3.6慢吗?

python performance performance-testing python-3.x

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