社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

JPG

JPG 最近创建的主题
JPG 最近回复了
6 年前
回复了 JPG 创建的主题 » Django序列化程序显示相关模型的布尔字段

使用 source BooleanField ,

class AppVersionSerializer(serializers.ModelSerializer):
    auto_start = serializers.BooleanField(source='app_uuid.auto_start')

    class Meta:
        model = AppVersion
        fields = ('app_version_uuid', 'app_version_name', 'version_code', 'version_name', 'auto_start')
6 年前
回复了 JPG 创建的主题 » 运行“python manage.py check”时出错

Django:1.8 doc for reverse()

使用,

from django.core.urlresolvers import reverse

附加信息

django.core.urlresolvers.reverse
自版本1.10起已弃用: 在旧版本中,这些函数位于django.core.urlsolvers中。从旧位置导入将继续工作,直到Django 2.0。

6 年前
回复了 JPG 创建的主题 » AttributeError:模块'django.db.models'没有属性'cascade'

应该是 CASCADE - (Ref: Django Doc) 大写 )

question = models.ForeignKey(Question, on_delete=models.CASCADE)

因此你的 models.py 变成,

#models.py
from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

因为你用的是 APIView 类,它将允许在视图类中定义的所有方法。DRF响应允许 HTTP GET 方法,因为您已在视图中定义了。


下面的视图类将允许 HTTP GET,HTTP POST,HTTP PATCH,HTTP PUT and HTTP DELETE

class TokenValidateView(APIView):
    def get(self, request, format=None):
        # something
        return Response("this is HTTP GET")

    def post(self, request, format=None):
        return Response("this is HTTP POST")

    def patch(self, request, format=None):
        return Response("this is HTTP PATCH")

    def put(self, request, format=None):
        return Response("this is HTTP PUT")

    def delete(self, request, format=None):
        return Response("this is HTTP DELETE")

如上所述,响应类检查 http方法 在视图类中, 不是他们的反应 .

所以,如果你想删除 HTTP获取 你的方法 允许的方法 ,只需移除 get() 视图类中的方法

class TokenValidateView(APIView):
    # remove the "get()" method
    def get(self, request, format=None):
        # something
        return Response("this is HTTP GET")

    def post(self, request, format=None):
        return Response("this is HTTP POST")

    def patch(self, request, format=None):
        return Response("this is HTTP PATCH")

    def put(self, request, format=None):
        return Response("this is HTTP PUT")

    def delete(self, request, format=None):
        return Response("this is HTTP DELETE")
5 年前
回复了 JPG 创建的主题 » 如何在django rest框架中显示基于函数的视图端点

您应该指定 many=True 序列化时。

serializer = ProfileSerializer(profile, many=True)
6 年前
回复了 JPG 创建的主题 » 如何在django-rest框架中访问父模型中的子完整记录

试试这个片段


#serializers.py
"""I've re-arranged the order of 'RefreshmentImageSerializer' serializer and 'EntertainmentSerializer' serializer"""
class RefreshmentImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = RefreshmentImage
        fields = '__all__'


class EntertainmentSerializer(serializers.ModelSerializer):
    image = RefreshmentImageSerializer(many=True, source='refreshmentimage_set')

    class Meta:
        model = Refreshment
        fields = '__all__'

# views.py
"""Added DRF stuffs such as 'api_view' and 'Response'"""
from rest_framework.decorators import api_view


@api_view()
def all_games_sports(request):
    entertainment = Refreshment.objects.all()
    serialize = EntertainmentSerializer(instance=entertainment, many=True)
    main = {'status': True, 'code': "CODE_SUCCESSFUL", 'msg': "SUCCESS", 'games_sports': serialize.data}
    return Response(main)

{
"status": true,
"code": "CODE_SUCCESSFUL",
"msg": "SUCCESS",
"games_sports": [
    {
        "id": 1,
        "image": [
            {
                "id": 1,
                "image": null,
                "refreshment": 1
            },
            {
                "id": 3,
                "image": "refreshment_image/jpg-icon.png",
                "refreshment": 1
            }
        ],
        "title": "t1",
        "type": "tt1",
        "charges": "123.00"
    },
    {
        "id": 2,
        "image": [
            {
                "id": 2,
                "image": "refreshment_image/asd.jpg",
                "refreshment": 2
            }
        ],
        "title": "t2",
        "type": "tt2",
        "charges": "321.00"
    },
    {
        "id": 3,
        "image": [
            {
                "id": 4,
                "image": "refreshment_image/Screenshot_from_2018-10-26_16-32-41.png",
                "refreshment": 3
            },
            {
                "id": 5,
                "image": "refreshment_image/twitter.png",
                "refreshment": 3
            }
        ],
        "title": "t3",
        "type": "tt3",
        "charges": "754.00"
    }
]
}

我在这里做了什么?

  1. 重新排列序列化程序的顺序以避免 未定义 错误
  2. 在中添加了新字段 EntertainmentSerializer 类来显示与 Refreshment 对象
  3. views.py 我加了一些drf的东西,比较合适

工具书类

  1. @api_view() decorator
  2. DRF's Response() class
  3. DRF Nested Serializers
  4. 这个 source keyword argument

希望这有帮助!!

6 年前
回复了 JPG 创建的主题 » 在python csv writer中用0或null填充空列值

试试这样的东西,

with open(f'{store_data}/test.csv', 'w', encoding='utf-8') as dataFile:
    task_data = MonitorItem.objects.all()
    wr = csv.writer(dataFile)
    # wr.writerow(taskHeaders)
    for t in task_data:
        x = t.x or "0"
        y = t.y or "0"
        z = t.z or "0"
        wr.writerow([x, y, z])

这里 x = t.x or "0" 是对…的渴望

if t.x:
    x = t.x
else:
    x = "0"

希望这有帮助!!

尝试覆盖 __init__() 序列化程序的方法如下,

the_fields = ['VonDC', 'VonAC', 'VoffDC', 'VonDC2', ]


class MySerializer(serializers.Serializer):
    unitID = serializers.CharField(required=True, allow_blank=False, max_length=50)
    timestamp = serializers.DateTimeField(required=True)

    def __init__(self, *args, **kwargs):
        super(MySerializer, self).__init__(*args, **kwargs)
        for field in the_fields:
            self.fields.update({field: serializers.FloatField(required=False)})
6 年前
回复了 JPG 创建的主题 » django-是否可以在count()内执行queryset

正如“红蟋蟀”所说,你可以得到 过滤计数 达金戈的 count() 方法为

Client.objects.filter(my_otherfilters..,request__completed=True).count()

这将返回 整数值 代表伯爵。


如果你想 QuerySet 以及 count ,

qs = Client.objects.filter(my_otherfilters..,request__completed=True) # the "qs" will get the querysets
qs_count = qs.count() # "qs_count" will return the count
6 年前
回复了 JPG 创建的主题 » 如何在django模板中获取decrement forloop.counter?

你可以用 forloop.revcounter

{% for value in list %}
    {{ forloop.revcounter }}
{% endfor %}

尝试使用 readonly_fields 在里面 admin.py 文件

class TableAdmin(admin.ModelAdmin):
    readonly_fields = ('label',)

admin.site.register(Table, TableAdmin)
6 年前
回复了 JPG 创建的主题 » 添加Django模型约束?

你可以用几种方法

方法-1: 覆盖 save() 方法 Period 模型组件

from django.core.exceptions import ValidationError


class Period(models.Model):
    number = models.PositiveIntegerField(primary_key=True)
    start_time = models.TimeField()
    end_time = models.TimeField()

    def save(self, *args, **kwargs):
        if self.end_time < self.start_time:
            raise ValidationError("some message")
        super().save(*args, **kwargs)



方法-2: 覆盖 clean() 模型的方法

from django.core.exceptions import ValidationError


class Period(models.Model):
    number = models.PositiveIntegerField(primary_key=True)
    start_time = models.TimeField()
    end_time = models.TimeField()

    def clean(self):
        super().clean()  # calling default cleaning
        if self.end_time < self.start_time:
            raise ValidationError("some message")


方法-3: 覆盖 full_clean() 方法

from django.core.exceptions import ValidationError


class Period(models.Model):
    number = models.PositiveIntegerField(primary_key=True)
    start_time = models.TimeField()
    end_time = models.TimeField()

    def full_clean(self, exclude=None, validate_unique=True):
        super().full_clean(exclude=None, validate_unique=True)  # calling default full_clean
        if self.end_time < self.start_time:
            raise ValidationError("some message")



参考
1。 Model.clean() - Django doc
2。 Model.save() - Django doc
三。 Model.full_clean() - Django doc

6 年前
回复了 JPG 创建的主题 » 外部链接在Docker Compose中不工作

我建议您在同一个docker compose文件中使用这两个服务并替换 external_links 具有 links

version: '3'
services:
  mongodb:
    image: mongo:latest
    container_name: "mongodb"
    volumes:
      - ./data/db:/data/db
    ports:
      - 27017:27017
  webapp:
    build:
      context: .
    links:
      - mongodb
    depends_on:
      - mongodb
    ports:
      - 8080:8080


我如何确保MongoDB在webapp启动之前启动并运行?

阿飞 链接 会处理好情况的。

你可以使用 depends_on

方法1

重写 save() 方法 Value 模型,AS

class Visits(models.Model):
    value = models.IntegerField()
    coefficient = models.IntegerField()
    points = models.IntegerField(blank=True, null=True, editable=False)

    def save(self, *args, **kwargs):
        self.points = int(self.value / self.coefficient)
        super().save(*args, **kwargs)


方法2

使用 @property 装饰者

class Visits(models.Model):
    value = models.IntegerField()
    coefficient = models.IntegerField()

    @property
    def points(self):
        return int(self.value / self.coefficient)
6 年前
回复了 JPG 创建的主题 » 针对布尔值的Django表单验证不起作用

From the doc ,

因为所有的字段子类 required=True 默认情况下,这里的验证条件很重要。如果要在窗体中包含一个布尔值,该布尔值可以是 True False (例如,选中或未选中的复选框),您必须记住传入 required=False 当创建 BooleanField .



所以,添加 要求=假 在里面 BooleanField() 作为,

class AddItemToCartForm(forms.Form):
    part_id = forms.IntegerField()
    is_kit = forms.BooleanField(required=False)


附加信息 :
如果未选中该复选框,浏览器将不会发送请求的发布参数中的字段。如果不指定字段是可选的,Django将在不在post参数中时将其视为缺少的字段。

参考文献 : SO Post

6 年前
回复了 JPG 创建的主题 » 在django中使用annotate的日期时间差

因为你在使用 MYSQL 5.6 ,你可以使用MySQL TIMESTAMPDIFF(...) 功能。

我的建议是,通过继承 django.db.models.expressions.Func 类为,

class Format(dict):
    def __missing__(self, key):
        return '%(' + key + ')s'


class TIMESTAMPDIFF(Func):
    def __init__(self, start, end, unit='days'):
        extra = {}
        expressions = [start, end]
        extra['output_field'] = IntegerField()
        self.template = self.template % Format({"unit": unit})
        super().__init__(*expressions, **extra)

    function = 'TIMESTAMPDIFF'
    template = "%(function)s(%(unit)s, %(expressions)s)"



因此,annotation查询将为,

event_queryset = Event.objects.annotate(days=TIMESTAMPDIFF(F('start'), F('end'), unit='DAY' ))
参考文献 : How to implement TIMESTAMPDIFF() of MYSQL in Django
6 年前
回复了 JPG 创建的主题 » django rest框架manytomy字段排序

使用 SerializerMethodField 作为

class CarrierStopSerializer(serializers.ModelSerializer):
    carrier = serializers.StringRelatedField()
    bus_stop = serializers.SerializerMethodField(read_only=True)

    def get_bus_stop(self, model):
        return [bus_stop.__str__() for bus_stop in model.bus_stop.all().order_by('id')]

    class Meta:
        model = CarrierStop
        fields = ['id', 'carrier', 'bus_stop']
6 年前
回复了 JPG 创建的主题 » django cbv:get()和get_-context_-data()。

我正在尝试从get()方法传递查询集以获取上下文数据()。


class StatsView(DetailView):
    """ Create statistics pageview """
    template_name = 'app/stats.html'

    def get(self, request, *args, **kwargs):
        queryset = SampleModel.objects.all()
        return render(request, self.template_name, context=self.get_context_data(queryset=queryset))

    def set_if_not_none(self, mapping, key, value):
        if value is not None:
            if len(value) != 0:
                mapping[key] = value

    def get_context_data(self, **kwargs):
        qs = kwargs.get('queryset')
        # do something


如果你压倒一切 get_context_data() 方法,它可以调用 super() 方法AS

class StatsView(DetailView):
    # your code

    def get_context_data(self, **kwargs):
        data = super(StatsView, self).get_context_data(**kwargs)
        data.update({"foo": "bar"})
        return data

我想知道一些有关 get() 获取上下文数据()

我觉得已经很好地回答了, When to use get, get_queryset, get_context_data in Django?

自从 language 是一个 reverse relation 不应该是 CharField . 所以你必须定义 LanguageSerializer() 在你的地图上 GetCompanySerializer 如下所示,

class LanguageSerializer(serializers.ModelSerializer):
    class Meta:
        fields = '__all__'
        model = Language


class GetCompanySerializer(serializers.ModelSerializer):
    language = LanguageSerializer(many=True)

    class Meta:
        model = Company
        fields = ('company_name', 'started_from', 'country', 'email', 'website', 'ip', 'active', 'language')



如果你想得到 __str__() 代表 Language 模型,应用 StringRelatedField() 而不是 CharField()

class GetCompanySerializer(serializers.ModelSerializer):
    language = serializers.StringRelatedField(many=True)

class Meta:
    model = Company
    fields = ('company_name', 'started_from', 'country', 'email', 'website', 'ip', 'active', 'language')</code></pre>