小编JPG*_*JPG的帖子

django-filter:/ goods / __init __()处的TypeError得到了意外的关键字参数'name'

我正在学习Django REST Framework。我想在django rest框架中使用django-filter选择我想要的结果。我写了一个filter.py来获取价格在pricemin和pricemax之间的商品:

class GoodsFilter(filters.FilterSet):
    pricemin = filters.NumberFilter(name="shop_price", lookup_expr='gte')
    pricemax = filters.NumberFilter(name="shop_price", lookup_expr='lte')

    class Meta:
        model = Goods
        fields = ['pricemin', 'pricemax']
Run Code Online (Sandbox Code Playgroud)

然后我在view.py中使用了此过滤器:

class GoodsListViewSet(mixins.ListModelMixin,viewsets.GenericViewSet):
    queryset = Goods.objects.all()
    serializer_class = GoodsSerializer
    pagination_class = GoodsPagination
    filter_backends = (DjangoFilterBackend,)
    filter_class = GoodsFilter
Run Code Online (Sandbox Code Playgroud)

当我运行项目时,会出现如下错误:

TypeError at /goods/
__init__() got an unexpected keyword argument 'name'
Run Code Online (Sandbox Code Playgroud)

我没有在代码中使用参数'name',所以我不知道该错误。追溯:

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/goods/

Django Version: 2.0.3
Python Version: 3.6.4
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'DjangoUeditor',
 'users.apps.UsersConfig',
 'goods.apps.GoodsConfig',
 'trade.apps.TradeConfig',
 'user_operation.apps.UserOperationConfig',
 'crispy_forms', …
Run Code Online (Sandbox Code Playgroud)

django django-filter django-rest-framework

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

如何在 django rest 框架中获取 id 的外键字段名称

这是我的models.py

from __future__ import unicode_literals
from django.db import models

class User(models.Model):
    name = models.CharField(max_length=200)
    company_name = models.ForeignKey('Company',on_delete=models.CASCADE,related_name='user')

    def __str__(self):
        return self.name

class Company(models.Model):
    name = models.CharField(max_length=200)
    phone_number = models.IntegerField(null=True,blank=True)

    def __str__(self):
        return self.name

class Catalog(models.Model):
    name = models.CharField(max_length=200)
    no_of_pcs = models.IntegerField(null=True,blank=True)
    per_piece_price = models.DecimalField(null=True,blank=True,max_digits=10,decimal_places=2)
    company_name = models.ForeignKey(Company,on_delete=models.CASCADE,related_name='catalog')

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

这是我的 serializers.py

from rest_framework import serializers
from .models import *
from django.db.models import Sum,Count

class UserSerializer(serializers.ModelSerializer):
    # name = serializers.StringRelatedField()
    # company_name = serializers.CharField()
    class Meta:
        model = User …
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

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

graphene-django:不带“Meta.fields”或“Meta.exclude”的“Meta.model”自 0.15.0 起已被弃用,现在已被禁止

我正在尝试使用 django-graphene 返回过滤结果,但它给出了有关错误消息的错误

class PatientType(DjangoObjectType):
    class Meta:
        model = Patients
        exclude = ('active',)
        interfaces = (relay.Node,)


class PatientsQuery(ObjectType):
    get_patient = graphene.Field(PatientType, id=graphene.Int())
    all_patients = graphene.List(
        PatientType, first=graphene.Int(), skip=graphene.Int(), phone_no=graphene.Int()
    )
    upcoming_appointments = DjangoFilterConnectionField(PatientType)


@permissions_checker([IsAuthenticated, CheckIsOrganizationActive])
def resolve_upcoming_appointments(self, info, **kwargs) -> List:
    d = datetime.today() - timedelta(hours=1)
    settings.TIME_ZONE  # 'Asia/Karachi'
    aware_datetime = make_aware(d)
    res = Patients.objects.filter(appointments__booking_date__gte=aware_datetime,
                                  appointments__booking_date__day=aware_datetime.day,
                                  appointments__status=True)
    if res:
        return res
    return []


class Query(
    organization_schema.OrganizationQuery,
    inventory_schema.MedicineQuery,
    patient_schema.PatientsQuery,
    graphene.ObjectType,
):
    pass
Run Code Online (Sandbox Code Playgroud)

django django-filter graphql

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

drf-spectaulous:使用@extend_schema指定空负载

考虑到我有一个简单的观点,

# serializers.py
class EmptyPayloadResponseSerializer(serializers.Serializer):
    detail = serializers.CharField()


# views.py
from rest_framework.views import APIView
from rest_framework.response import Response
from drf_spectacular.utils import extend_schema
from .serializers import EmptyPayloadResponseSerializer


class EmptyPayloadAPI(APIView):
    @extend_schema(responses=EmptyPayloadResponseSerializer)
    def post(self, request, *args, **kwargs):
        # some actions
        return Response(data={"detail": "Success"})
Run Code Online (Sandbox Code Playgroud)

当我渲染架构时,我收到以下错误响应,

错误#0:EmptyPayloadAPI:无法猜测序列化程序。这是 APIView 的优雅后备处理。如果视图在您的控制之下,请考虑使用 GenericAPIView 作为视图基类。暂时忽略视图。

那么,我如何告诉@extend_schema装饰器我不打算传递任何内容作为有效负载?

python django django-rest-framework openapi drf-spectacular

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

Git SSH 密钥:github 和 gitlab 的两个不同帐户

有什么办法可以使用两个不同的邮箱地址通过SSH Key操作GitLabGitHub账户吗?

我有两个邮件 id,username@gmail.com并且username@xyz.in我想将一些项目推送到 gitlab 以及一些其他项目到 github,并且我想避免在每个推送命令中输入密码提示。是否可以?

git ssh-keys gitlab

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

Django:TemplateSyntaxError,过滤器无效

我正在尝试使用变量访问字典中的值,所有这些都在遵循 Django 模板语言的 HTML 文件中。Django 的模板语言不允许您使用变量作为键来访问字典,因此我决定使用 Django 过滤器来执行此操作。但是,我收到“无效过滤器”错误,我不知道为什么。

我的 html 文件

<table class="table">
<tbody>
    <tr>
        <th scope="row">Username</th>
        <th scope="row">Full Name</th>
        <th scope="row">Points</th>
        {% for subject in subjects %}
        <th scope="row">{{ subject }}</th>
        {% endfor %}
    </tr>
    {% for user in users %}
    <tr>
        <td>
            <a href="{% url 'profile' username=user.username %}">{{ user.username }}</a>
        </td>
        <td>{{ user.first_name }} {{ user.last_name }}</td>
        <td>{{ user.profile.points.total }}</td>
        {% for subject in subjects %}
        <td>{{ user.profile.points|keyvalue:subject }}</td>
        {% endfor %}
    </tr>
    {% endfor %}
</tbody>
Run Code Online (Sandbox Code Playgroud)

我的过滤器.py …

django django-templates django-filters

5
推荐指数
3
解决办法
9236
查看次数

如何在 Django 迁移时设置/提供默认值?

场景
我有一个模型,Customer

class Customer(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()
    company = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)


现在我用如下关系更新了company属性ForeignKey

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


class Customer(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()
    company = models.ForeignKey(Company)
Run Code Online (Sandbox Code Playgroud)



我需要的是,当新的迁移应用于数据库时,相应的Company实例必须自动生成并映射到实例的company属性Customer

那可能吗?我怎样才能做到这一点?

django django-models django-migrations

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

Django Rest Framework 将数据从序列化器保存到模型

如何将数据从序列化程序保存到模型数据库。以下是示例代码但不将数据保存到数据库!

例如,我正在使用示例视图:
views.py

@api_view(['GET', 'POST', ])
def login(request):
    if request.method == "POST":
        s = LoginSerializer(data=request.data)
        if s.is_valid():
            s.save()
            return Response(s.data, status=201)
        else:
            return Response(s.data, status=203)
    else:
        return Response("", status=404)
Run Code Online (Sandbox Code Playgroud)


模型.py

from django.db.models import Model
from django.db import models


class UserDetails(Model):
    userid = models.AutoField(primary_key=True)
    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=20)
    phone = models.CharField(max_length=15)


class UserLogin(Model):
    userid = models.ForeignKey(UserDetails, on_delete=None)
    email = models.CharField(max_length=20)
    password = models.CharField(max_length=30)
Run Code Online (Sandbox Code Playgroud)


序列化程序.py

from rest_framework import serializers
from api.models import UserLogin, UserDetails


class LoginSerializer(serializers.Serializer):
    userid = serializers.Field()
    email …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

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

在 django rest framewrok 中获取文件参数(大小、文件名)

我需要获取文件参数在我的 rest api 中。

模型:

class Movie(models.Model):
    title = models.CharField(max_length=100)
    attachment = models.FileField(upload_to='files/courses/', default=None, blank=True, null=True)

    def __str__(self):
        return self.title
Run Code Online (Sandbox Code Playgroud)

序列化器:

class MovieSerializer(serializers.ModelSerializer):
    attachment = serializers.FileField()

    class Meta:
        model = Movie
        fields = ('title','attachment')
Run Code Online (Sandbox Code Playgroud)

看法:

class MovieViewSet(viewsets.ModelViewSet):
    queryset = Movie.objects.all()
    serializer_class = MovieSerializer
Run Code Online (Sandbox Code Playgroud)

当我做 GET 请求时,我得到了标题和文件 url,但我也想得到文件大小和文件名。怎么做?

django django-rest-framework

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

Django:跨多个域维护会话

我有两个/多个域,foo.com并且bar.com都具有相同的后端,这意味着两个域都将即将到来的请求重定向到托管在其他地方的同一个 “Web 实例”


当前行为

如果用户登录foo.com,他/她还需要登录bar.com才能访问任何端点/URL,例如bar.com/some/url/end-point/


SESSION_COOKIE_DOMAIN,如果我的域有可能做一些常见的模式。不幸的是,我没有。

问题
如何跨多个域维护用户会话?

python django django-authentication django-sessions

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