小编jar*_*ssi的帖子

Django REST框架+ Django REST Swagger + ImageField

我创建了一个带有ImageField的简单模型,我想用django-rest-framework + django-rest-swagger创建一个api视图,该文档已记录并能够上传文件.

这是我得到的:

models.py

from django.utils import timezone
from django.db import models

class MyModel(models.Model):

    source = models.ImageField(upload_to=u'/photos')
    is_active = models.BooleanField(default=False)
    created_at = models.DateTimeField(default=timezone.now)

    def __unicode__(self):
        return u"photo {0}".format(self.source.url)
Run Code Online (Sandbox Code Playgroud)

serializer.py

from .models import MyModel

class MyModelSerializer(serializers.ModelSerializer):

    class Meta:
        model = MyModel
        fields = [
            'id',
            'source',
            'created_at',
        ]
Run Code Online (Sandbox Code Playgroud)

views.py

from rest_framework import generics
from .serializer import MyModelSerializer

class MyModelView(generics.CreateAPIView):
    serializer_class = MyModelSerializer
    parser_classes = (FileUploadParser, )

    def post(self, *args, **kwargs):
        """
            Create a MyModel
            ---
            parameters:
                - name: source
                  description: …
Run Code Online (Sandbox Code Playgroud)

python django swagger django-rest-framework django-swagger

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

Python字符串到Django时区(知道日期时间)

TL; DR;

如何转换2016-01-01为django timezone??

完整版本

我从表单中收到一个查询字符串参数,我想得到该字符串并将其用作Django中的日期时间过滤器.问题是,当我将字符串转换为日期时间时,它不会识别日期时间,因此由于时区不同而丢失了几个小时.也许我在格式化中迷失自己,但我无法做到.

我有pytz,我也有USE_TZ = True我的设置.

例:

from datetime import date
# Example from what I receive as GET querystring parameter
start_date, end_date = '15-01-2016', '16-01-2016'
DATE_FORMAT = '%Y-%m-%d'
start_date = start_date.split('-')
start_date = date(int(start_date[2]), int(start_date[1]), int(start_date[0]))
sd_filter = start_date.strftime(DATE_FORMAT)

end_date = end_date.split('-')
end_date = date(int(end_date[2]), int(end_date[1]), int(end_date[0]))
ed_filter = end_date.strftime(DATE_FORMAT)

#query
my_list = MyModel.objects.filter(created_at__range=(sd_filter, ed_filter))
Run Code Online (Sandbox Code Playgroud)

问题在于过滤器..由于djanto设置的时区,我失去了几个小时.

UPDATE1:我不需要将a转换datetime.now()为我的时间..我需要将字符串转换为datetime ..

有人帮忙吗?

提前致谢

python django timezone datetime pytz

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

PyTest与单django模型创建

我正在使用混音器来生成我的模型并使用pytest运行它们.我想做的只是生成我的模型一次,并使用我生成的相同模型运行多个测试.

这就是我想要的:

import pytest
from mixer.backend.django import mixer
from weddings.models import Wedding


@pytest.mark.django_db
class TestProductApi(object):

    @pytest.fixture(scope="module")
    def wedding(self):
        wedding = mixer.blend(
            'weddings.Wedding',
        )
        mixer.cycle(12).blend(
            'weddings.Product',
            wedding=wedding,
        )

        mixer.cycle(4).blend(
            'weddings.Product',
            wedding=wedding,
            is_visible=False,
        )

        mixer.blend(
            'weddings.Product',
            wedding=wedding,
            is_active=False,
        )
        return wedding

    def test_number_one(self, wedding):
        print 'running test_number_one'
        print 'wedding.id == {}'.format(wedding.id)
        print 'Wedding.objects.all().count() == {}'.format(Wedding.objects.all().count())
        print 'finished test_number_one'

    def test_number_two(self, wedding):
        print 'running test_number_two'
        print 'wedding.id == {}'.format(wedding.id)
        print 'Wedding.objects.all().count() == {}'.format(Wedding.objects.all().count())
        print 'finished test_number_two'
Run Code Online (Sandbox Code Playgroud)

产量

tests/weddings/api/test_products.pyTestProductApi.test_number_one                                                        0%           running test_number_one
wedding.id …
Run Code Online (Sandbox Code Playgroud)

python django mixer pytest

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