小编Joh*_*fis的帖子

使用django-rest-framework序列化程序检索外键值

我正在使用django rest框架来创建API.我有以下型号:

class Category(models.Model):
    name = models.CharField(max_length=100)

    def __unicode__(self):
        return self.name


class Item(models.Model):
    name = models.CharField(max_length=100)
    category = models.ForeignKey(Category, related_name='items')

    def __unicode__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

要为我要做的类别创建一个序列化器:

class CategorySerializer(serializers.ModelSerializer):
    items = serializers.RelatedField(many=True)

    class Meta:
        model = Category
Run Code Online (Sandbox Code Playgroud)

......这会为我提供:

[{'items': [u'Item 1', u'Item 2', u'Item 3'], u'id': 1, 'name': u'Cat 1'},
 {'items': [u'Item 4', u'Item 5', u'Item 6'], u'id': 2, 'name': u'Cat 2'},
 {'items': [u'Item 7', u'Item 8', u'Item 9'], u'id': 3, 'name': u'Cat 3'}]
Run Code Online (Sandbox Code Playgroud)

我如何从Item序列化器获得反向,即:

[{u'id': 1, 'name': 'Item 1', 'category_name': u'Cat …
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

57
推荐指数
7
解决办法
8万
查看次数

Python 3.6项目结构导致RuntimeWarning

我正在尝试打包我的项目以进行分发,但是RuntimeWarning当我运行模块时我正在尝试.

我在Python邮件列表上找到了一个错误报告,表明这RuntimeWarning是Python 3.5.2中引入的新行为.

阅读错误报告,似乎发生了双重导入,这RuntimeWarning在警告用户时是正确的.但是,我没有看到我需要对自己的项目结构进行哪些更改以避免此问题.

这是我试图"正确"构建的第一个项目.我希望在推送代码时有一个整洁的布局,以及一个可以被其他人轻松克隆和运行的项目结构.

我的结构主要基于http://docs.python-guide.org/en/latest/writing/structure/.

我在下面添加了最小工作示例的详细信息.

要复制该问题,我运行主文件python -m:

(py36) X:\test_proj>python -m proj.proj
C:\Users\Matthew\Anaconda\envs\py36\lib\runpy.py:125: RuntimeWarning: 
'proj.proj' found in sys.modules after import of package 'proj', but prior 
to execution of 'proj.proj'; this may result in unpredictable behaviour
  warn(RuntimeWarning(msg))
This is a test project.`
Run Code Online (Sandbox Code Playgroud)

运行我的测试很好:

(py36) X:\test_proj>python -m unittest tests.test_proj
This is a test project.
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
Run Code Online (Sandbox Code Playgroud)

复制问题的项目结构如下:

myproject/
    proj/
        __init__.py
        proj.py
    tests/
        __init__.py …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

28
推荐指数
3
解决办法
5481
查看次数

django模型表.包括相关模型的字段

我有一个名为Student的模型,它有一些字段,与用户的一个OneToOne关系(django.contrib.auth.User).

class Student(models.Model):

    phone = models.CharField(max_length = 25 )
    birthdate = models.DateField(null=True) 
    gender = models.CharField(max_length=1,choices = GENDER_CHOICES) 
    city = models.CharField(max_length = 50)
    personalInfo = models.TextField()
    user = models.OneToOneField(User,unique=True)
Run Code Online (Sandbox Code Playgroud)

然后,我有一个模型的ModelForm

class StudentForm (forms.ModelForm):
    class Meta:
        model = Student
Run Code Online (Sandbox Code Playgroud)

使用Meta类中的fields属性,我设法只显示模板中的一些字段.但是,我可以指出要显示的用户字段吗?

有点像:

   fields =('personalInfo','user.username')
Run Code Online (Sandbox Code Playgroud)

目前没有显示任何内容.仅适用于StudentFields /

提前致谢.

python django django-forms

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

PyCharm远程调试(pydevd)无法连接

PyCharm远程调试(pydevd)没有连接以下消息:

error: [Errno 10061] No connection could be made because the target machine actively refused it
Run Code Online (Sandbox Code Playgroud)

我该如何排除故障?

PyCharm中的输出控制台显示:

Starting debug server at port 21000
Use the following code to connect to the debugger:
import pydevd
pydevd.settrace('*.*.*.*', port=21000, suspend=False)
Waiting for process connection...
Server stopped.
Run Code Online (Sandbox Code Playgroud)

我检查了防火墙,PyCharm允许传入和传出连接.

python debugging remote-debugging pydev pycharm

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

Django Rest框架 - APIView分页

我有一个非常简单APIView,但我不知道如何在这里设置分页.在这种情况下,我选择一个Event给定的pk,然后我得到所有NewsItems分配给它Event.

pagination_class = LimitOffsetPagination当我在开头定义queryset时,工作正常ListCreateAPIView,例如.queryset = Event.objects.all()但不是自定义get:

class EventNewsItems(APIView):
    pagination_class = LimitOffsetPagination

    def get(self, request, pk, format=None):

        #user = request.user
        event = Event.objects.get(pk=pk)
        news = event.get_news_items().all()

        serializer = NewsItemSerializer(news, many=True, context={'request':request})
        response = Response(serializer.data, status=status.HTTP_200_OK)
        return response
Run Code Online (Sandbox Code Playgroud)

解决了:

def get(self, request, pk, format=None):

    #user = request.user
    event = Event.objects.get(pk=pk)
    news = event.get_news_items().all()
    paginator = LimitOffsetPagination()
    result_page = paginator.paginate_queryset(news, request)
    serializer = NewsItemSerializer(result_page, many=True, context={'request':request}) …
Run Code Online (Sandbox Code Playgroud)

python django pagination django-rest-framework

15
推荐指数
4
解决办法
7798
查看次数

Django导入导出 - 无法使用BinaryField导入模型

我正在尝试从可以为空的模型导入数据BinaryField.数据不包含该字段,我希望在字段中使用空值导入它.如果该字段已存在于给定的数据库中id,则应保持该值不变.

我从fields相应Resource对象的白名单中删除了该字段,并将其添加到exclude黑名单中.但是,我在导入时遇到此错误 - can't pickle memoryview objects.

追溯:

Traceback (most recent call last):
File "/lib/python3.5/site-packages/import_export/resources.py", line 451, in import_row
original = deepcopy(instance)
File "/lib/python3.5/copy.py", line 182, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/lib/python3.5/copy.py", line 297, in _reconstruct
state = deepcopy(state, memo)
File "/lib/python3.5/copy.py", line 155, in deepcopy
y = copier(x, memo)
File "/lib/python3.5/copy.py", line 243, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/lib/python3.5/copy.py", line 174, …
Run Code Online (Sandbox Code Playgroud)

python django django-import-export

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

django-filter使用分页

我正在使用该django-filter包在我的列表视图上提供搜索功能.

现在我想为该视图添加一个分页.
我正在尝试将分页与过滤的查询集结合起来,但我不知道如何继续.

到目前为止,我已经尝试了以下内容views.py:

def search(request):
    qs = local_url.objects.filter(global_url__id=1).all()
    paginator = Paginator(qs, 25)
    page = request.GET.get('page')
    try:
        pub = paginator.page(page)
    except PageNotAnInteger:
        pub = paginator.page(1)
    except EmptyPage:
       pub = paginator.page(paginator.num_pages)
    url_filter = PublicationFilter(request.GET, queryset=qs)
    return render(request, 'ingester/search_list.html', {'filter': url_filter, 'publication':pub})
Run Code Online (Sandbox Code Playgroud)

python django pagination django-filter

14
推荐指数
4
解决办法
8402
查看次数

FastAPI如何仅允许特定IP的端点访问?

如何使用 FastAPI 将端点访问限制为仅特定 IP?

fastapi

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

Django swagger-如何从delete,put方法中禁用DjangoFilterBackend查询过滤器?

我创建了一个AssetsFilter类:

from django_filters import Filter
from django_filters import rest_framework as filters
from django_filters.fields import Lookup

from .models import Assets


class MyListFilter(Filter):
    def filter(self, qs, value):
        value_list = value.split(',')
        return super(ListFilter, self).filter(qs, Lookup(value_list, 'in'))


class AssetsFilter(filters.FilterSet):
    name = filters.CharFilter(lookup_expr='icontains', help_text=u'Filter by name')
    criticality = MyListFilter(name='critical', help_text=u'Filter by_id')

    class Meta:
        model = Assets
        fields = ['name', 'criticality ']
Run Code Online (Sandbox Code Playgroud)

现在我在我的Viewset中使用此过滤器,如下所示:

from .serializers import AssetSerializers
from .filters import AssetsFilter


class AssetViewSet(viewsets.ModelViewSet):
    """
    This viewset automatically provides `list`, `create`, `retrieve`,
    `update` and `destroy` …
Run Code Online (Sandbox Code Playgroud)

python django swagger django-rest-framework django-rest-swagger

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

Django:一个视图的基本身份验证(避免使用中间件)

我需要提供http-basic-auth一个视图.

我想避免修改中间件设置.

背景:这是一个由远程应用程序填充的视图.

python authentication django http-authentication basic-authentication

12
推荐指数
3
解决办法
2528
查看次数