小编Anu*_*TBE的帖子

在CakePHP中的WHERE IN中使用数组

我正在开发CakePHP 3.2

我想在查询中使用数组 WHERE IN ()

代码是

$filter_p_t = $this->request->query('p_t');

$pros10 = $this->Products->find()
 ->where([
   'SellerProducts.stock >' => 0,
   'SellerProducts.status' => 1,
   'Products.p_status' => 1,
 ])
 ->contain([
   'SellerProducts',
   'ProductTypes.Subcategories.Categories',
 ]);
Run Code Online (Sandbox Code Playgroud)

$filter_p_t是来自带参数的url的数组

/products/display/1?p_t[]=1&p_t[]=86
Run Code Online (Sandbox Code Playgroud)

我想包括$filter_p_twhere条件中找到所有IN(1,86)

如何在CakePHP 3中使用php数组到WHERE IN条件?

cakephp where-in cakephp-3.2

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

Django redirect_authenticated_user:真不起作用

我正在Django 1.11中编写应用程序。

myapp/urls.py 图案看起来像

from django.conf.urls import url, include
from django.contrib import admin
from django.contrib.auth.views import LoginView

urlpatterns = [
    url(r'^login/$', LoginView.as_view(), {'redirect_authenticated_user': True}),
    url('^', include('django.contrib.auth.urls')),
    url('^', include('pages.urls')),
    url(r'^pages/', include('pages.urls')),
    url(r'^search/', include('search.urls')),
    url(r'^admin/', admin.site.urls),
]
Run Code Online (Sandbox Code Playgroud)

我想在尝试访问/login页面时重定向登录用户。为此,我已经按照此处的文档中的设置redirect_authenticated_user进行了设置True

但是,/login成功登录后访问时,它不会重定向。

python django django-authentication

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

在 cakephp 3 中按月选择记录数

我在用着CakePHP 3.x+

我必须在页面上显示一个图表,因此想为此构建脚本。

我必须选择当年按月分组的记录数。

这是我尝试过的。

$graph = $this->GenerateVideos->find()
        ->select('COUNT(id)', 'MONTH(created)')
        ->where(['YEAR(created)' => date('Y')])
        ->group(['MONTH(created)']);
Run Code Online (Sandbox Code Playgroud)

它生成像这样的sql

'sql' => 'SELECT GenerateVideos.COUNT(id) AS GenerateVideos__COUNT(`id`) FROM generate_videos GenerateVideos WHERE YEAR(created) = :c0 GROUP BY MONTH(created) ',
'params' => [
    ':c0' => [
        'value' => '2018',
        'type' => null,
        'placeholder' => 'c0'
    ]
],
Run Code Online (Sandbox Code Playgroud)

但这给出了错误

Error: SQLSTATE[42000]: Syntax error or access violation: 
1064 You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right …
Run Code Online (Sandbox Code Playgroud)

cakephp cakephp-3.x

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

模型字段上的 Django 吸气剂

我正在使用Django 2.x

我有一个像

class MyModel(models.Model):
    name = models.CharField()
    balance = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

我想更改 GET 请求中的 balance 值而不更改数据库中的值。

就像它可能是@Property字段一样,模型看起来像

class MyModel(models.Model):
    name = models.CharField()
    balance = models.IntegerField()

    @property
    def balance(self):
        if balance:
           return balance
        return 0.15 * 50
Run Code Online (Sandbox Code Playgroud)

但不允许重新声明。我该如何解决这个问题?

注意:字段应与ModelAdminDRF Serializer兼容

django django-models

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

Django 用 Case & When (条件表达式)注释排除

我在用着Django 2.2

在制作查询集时,我想要根据以下几个条件计算相关模型的数量

    queryset = self.model.objects.filter(user=self.request.user).annotate(
        count_videos=Count('video'),
        count_completed=Count(
            Case(
                When(video__status__in=Video.STATUS_LIST_COMPLETED)
            )
        ),
        count_failed=Count(
            Case(
                When(video__status__in=Video.STATUS_LIST_FAILED)
            )
        ),
        count_pending=Count(
            Case(
                When(
                    video__status__not_in=Video.STATUS_LIST_PENDING_EXCLUDE
                )
            )
        )
    )
Run Code Online (Sandbox Code Playgroud)

这里有 3 个计数有效,但在最后一个计数中count_pending,我必须对 进行计数exlude()。即,计算不包括传递列表的记录数。

我如何使用exclude上面的语句?

django

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

Django QuerySet value() 包含外键字段

Django 2.2在QuerySet上提供了一个方法values()来将查询集转换为字典

我在我的应用程序中使用相同的

new_plan_quota = PlanQuota.objects.filter(
    **filter_query
).select_related('quota')

new_plan_quota_values = list(new_plan_quota.values())
Run Code Online (Sandbox Code Playgroud)

它生成一个包含PlanQuota模型所有字段的 json 字符串。

模型就像

class PlanQuota(models.Model):
    name = models.CharField()
    quota = models.ForeignKey(Quota)
Run Code Online (Sandbox Code Playgroud)

如何在 json 中添加配额模型的字段?

django django-queryset

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

OSError:[Errno 30] Heroku 上 Django 中的只读文件系统

我使用 Django 2.0 和 Heroku 来托管该应用程序。

我的媒体目录设置就像

App/settings/production.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_cdn', 'media_root')
Run Code Online (Sandbox Code Playgroud)

我正在使用 gTTS 将文本转换为语音并将.mp3文件保存在媒体目录中:

tts_file_name = str(int(time.time())) + '.mp3'
joined_path = os.path.join(settings.MEDIA_ROOT, 'tts')
joined_path_with_file = os.path.join(joined_path, tts_file_name)

# create directory if does not exists
if not os.path.exists(joined_path):
    os.makedirs(joined_path)

tts = gTTS(text='Good morning', lang='en')
tts.save(joined_path_with_file)

# tts path to send to template
tts_media_url = os.path.join(settings.MEDIA_URL, 'tts', tts_file_name)
Run Code Online (Sandbox Code Playgroud)

它在本地系统上运行良好,因为我也可以手动更改文件权限。

但它在 Heroku 上不起作用并给出错误:

OSError: [Errno 30] Read-only file system: '/static_cdn'
Run Code Online (Sandbox Code Playgroud)

我尝试static_cdn …

python django heroku

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

Django 在属性字段上进行注释

我正在使用Django 2.0Django REST Framework

我有一个如下所示的模型。

class Contact(models.Model):
    first_name = models.CharField(max_length=100)

class AmountGiven(models.Model):
    contact = models.ForeignKey(Contact, on_delete=models.PROTECT)
    amount = models.FloatField(help_text='Amount given to the contact')

    @property
    def total_payable(self):
        return self.amount

    @property
    def amount_due(self):
        returned_amount = 0
        for returned in self.amountreturned_set.all():
            returned_amount += returned.amount

        return self.total_payable - returned_amount

class AmountReturned(models.Model):
    amount_given = models.ForeignKey(AmountGiven, on_delete=models.CASCADE)
    amount = models.FloadField()
Run Code Online (Sandbox Code Playgroud)

我必须分别获取amount given和的前 10 位联系人due

在我看来,我正在过滤数据

@api_view(http_method_names=['GET'])
def top_ten(request):
    filter_type = request.query_params.get('type', None)

    if filter_type == 'due':
        # query for …
Run Code Online (Sandbox Code Playgroud)

django django-models django-queryset

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

ValueError:Django中无法解析相关模型

我正在使用Django 2.x

我有一个模型user_setting,该模型具有Countryaddress模块下创建的模型的外键。

现在,我djanog-countries-plus用于添加国家/地区数据,因此更改了user_setting模块,使其现在指向的国家/地区模型django-countries-plus

from countries_plus.models import Country
from django.contrib.auth.models import User

class UserSetting(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    country = models.ForeignKey(Country, on_delete=models.PROTECT, blank=True, null=True, default=None)
    modified = models.DateTimeField(auto_now=True)
    created = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

最初产生的迁移是

# 000_initial
class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('address', '0001_initial'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='UserSetting',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), …
Run Code Online (Sandbox Code Playgroud)

django django-countries

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

当 Debug=False 时,Django Heroku 不提供静态文件

我在Heroku上托管我的Django应用程序并使用白噪声来处理静态文件。

以下是settings.py的内容

DEBUG = False

ALLOWED_HOSTS += [
    'example.com',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    ...
]

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static_my_project')
]

STATIC_ROOT = os.path.join(BASE_DIR, 'static_cdn', 'static_root')
Run Code Online (Sandbox Code Playgroud)

但是静态文件不起作用。

设置Debug=True为静态文件提供服务,但在Debug=False.

django heroku whitenoise

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