社区所有版块导航
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
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  MCC  »  全部回复
回复总数  85
8 年前
回复了 MCC 创建的主题 » 求助,下面情况如何创建 Model?

jenkins_build_id 不要用id,另开一个字段配

9 年前
回复了 MCC 创建的主题 » getJSON接收不到Django-rest-framework的json数据

我想到个很搓的招儿,把json的这段改成console.log("{% url 'snippet-list' %}?format=json"),看看是地址给错了还是这里js不让用模板渲染啥。。

(还有这种超长的字段,完全可以不显示在列表的嘛,除非需求要求)我在想为啥我没碰到过这种事,才发现我都没设置显示

有个方法,这个model新写一个property, 返回self.简介的前50个字+“...”,然后在admin里面设置这个property, 不显示简介

9 年前
回复了 MCC 创建的主题 » [新手求罩]如何在django中保有一个set

@stosy https://docs.djangoproject.com/en/1.8/topics/cache/

@$yann 太好了,我也学到了

9 年前
回复了 MCC 创建的主题 » [新手求罩]如何在django中保有一个set

不用数据库可以用缓存么

9 年前
回复了 MCC 创建的主题 » 怎么用foreignkey 实现Django下拉选择框

话说user为啥不直接保存request.user 要用user.username? 万一用户去改username了,这个表连接关系就那啥了。。

9 年前
回复了 MCC 创建的主题 » 怎么用foreignkey 实现Django下拉选择框

@HelloSam 我自己很少用View,所以照着文档改的,没调试过。。。

from django.shortcuts import render
from django.views.generic import View


def addReport(View):
    form_class = EnteringForm()
    template_name = 'report_template.html'

    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST)
        if form.is_valid():
            report_tuple = ReportModel(
                user=request.user.username,
                school=form_context.cleaned_data['school'],
                grade=form_context.cleaned_data['grade'],
                home_location=form_context.cleaned_data['home_location'],
            )
            report_tuple.save()
            form = EnteringForm()
        else:
            return HttpResponse(form_context['user'].errors)
        return render(request, self.template_name, {'form': form})
9 年前
回复了 MCC 创建的主题 » [求助]django admin如何同时插入多条数据

manytomany有个through用法,我没有试过,不知道有没有帮助

9 年前
回复了 MCC 创建的主题 » [求助]django admin如何同时插入多条数据

A ManyToManyField cannot be included in unique_together. (It’s not clear what that would even mean!) If you need to validate uniqueness related to a ManyToManyField,

用many to many的话不是插入多个记录,是插入一条记录,时段包含了 8:00~9:00和9:00~10:00的list,但是这样的唯一我不知道真正效果是啥样的,可能做不到你想要的唯一

如果难受一些就是恢复原状,插入多个记录了。。

9 年前
回复了 MCC 创建的主题 » [求助]django admin如何同时插入多条数据

@ampeeg 申请时段你是怎么做到数据库上面的唯一的?

今天的8:00~9:00和明天的8:00~9:00是怎么唯一的,用的是id还是什么之类的东西?

我之前many to many的想法是,时间这个是没法唯一的,就是在申请的时候逻辑检测是不是被占用

如果一定要唯一,你就需要专门做个表,包含了场地名称,日期,时段,来做到数据库层的唯一,这样表的结构就不是你现在设计的这样了

9 年前
回复了 MCC 创建的主题 » [求助]django admin如何同时插入多条数据

@ampeeg 用manytomany试一试 foreign是one to many的,你这个看上去应该是many to many

9 年前
回复了 MCC 创建的主题 » [求助]django admin如何同时插入多条数据

使用的manytomany吗

9 年前
回复了 MCC 创建的主题 » 怎么用foreignkey 实现Django下拉选择框

上面那个例子的form声明,本来就没有user

class AccountItemForm(forms.Form):
    item_type_choice = ((1, "支出"), (0, "收入"),)
    datetime = forms.DateTimeField(label="帐目日期")
    detail = forms.CharField(widget=forms.Textarea, label="帐目明细", max_length=65535)
    money = forms.DecimalField(label="单位金额", min_value=0.01, max_digits=10, decimal_places=2)
    quantity = forms.IntegerField(label="数量", min_value=1)
    account_type = forms.ChoiceField(label="帐目类型", required=True, widget=forms.Select, choices=(),)
    item_type = forms.ChoiceField(
        label="帐目操作",
        required=True,
        widget=forms.RadioSelect(renderer=RadioCustomRenderer),
        choices=item_type_choice,
        initial='1')

    def set_item_type_choices(self, request):
       //blablabla
9 年前
回复了 MCC 创建的主题 » 怎么用foreignkey 实现Django下拉选择框

@HelloSam 我处理的类似的还真的是在save里面操作的,本身写form里面就没有写user字段,因为user信息本来就是包含在request里面的,就是取出来的时候再判断用户是否合法是不是登录什么的,比如说像这样的

def account_create(request):
    next_path = '/accountbook'
    if not request.user.is_authenticated():// 提前判断用户是否合法
        return message_page(request, '访问错误', '未登录,不能新建帐目。', nextpath=next_path)
    items = Account_item.objects.filter(
        user=request.user).values('detail').distinct()
    if request.method == 'POST':
        item_form = AccountItemForm(request.POST)
        item_form.set_item_type_choices(request)
        if item_form.is_valid():
            account_type_id = int(item_form.cleaned_data['account_type'])
            account_type = None
            item_type = item_form.cleaned_data['item_type']
            money = Decimal(item_form.cleaned_data['money'])
            if int(item_type) is 1:
                money = -money
            if not account_type_id is 0:
                try:
                    account_type = Account_type.objects.get(id=account_type_id)
                    # if not account_type.owner and not account_type.owner is request.user:
                    #    account_type = None
                except Account_type.DoesNotExist:
                    account_type = None
            new_item = Account_item(
                user=request.user, //看这里,save的时候直接赋值进去了
                detail=item_form.cleaned_data['detail'],
                datetime=item_form.cleaned_data['datetime'],
                money=money,
                quantity=item_form.cleaned_data['quantity'],
                account_type=account_type)
            new_item.save()
            return HttpResponseRedirect(next_path)

实践的时候碰到是这样的,用django admin删掉东西,关联的也一起被干掉了,但是直接操作数据库的删东西,关联的不会被干掉,不过对应的关联变成了None

9 年前
回复了 MCC 创建的主题 » 求助:views查询出来一个list里怎么查询另一个?

我倒是没试过直接在template里面用relate,果然更简便

9 年前
回复了 MCC 创建的主题 » 求助:views查询出来一个list里怎么查询另一个?

啊,用A2字段筛选一个B的list

不是上面那么简单

我想到的方法1:

新建一个list:

def(request):
    result = []
    a_list = A.objects.all()
    for a in a_list:
        b_list = B.objects..filter(B2=a)
        result.append({'a':a, 'b_list':b_list})
    return render_to_response('1.html',{'result':result})

 {% for r in result}
        {{ r.a.A1 }}
        {{ r.a.A2 }}
        {% for b in r.b_list%}
            {{ b.B1 }}
            {{ b.B2 }}
        {% endfor%}
{% endfor %}

方法2:

用api方式开放一个根据a查询b_list的接口,需要的时候再ajax调用

方法3:

join查询a和b,出来一大坨,和方法1差不多,然后处理下数据,和1的相比就是查询的次数少

9 年前
回复了 MCC 创建的主题 » 求助:views查询出来一个list里怎么查询另一个?
def(request):
    a_list = A.objects.all()
    b_list = B.objects.all()
    return render_to_response('1.html',{'a_list':a_list,'b_list':b_list})
9 年前
回复了 MCC 创建的主题 » Group by 如何按分组成员数量排序?

(mysql) 其他的backend语句可能细节不一样

其实还有曲线救国方法、、先根据count读出job的列表再根据job表格for读name

9 年前
回复了 MCC 创建的主题 » Group by 如何按分组成员数量排序?
SELECT * FROM test.job;

id  job
1   开发
2   测试
3   销售

SELECT * FROM test.staff;

id  name    job_id
1   张三      1
2   李四      2
3   王五      3
4   赵六      1
5   钱七      2
6   孙八      3
7   周九      1
8   吴十      2
9   郑零      1

SELECT s1.id, s1.name, s1.job_id, j.job
FROM test.staff s1
JOIN ( SELECT job_id, COUNT(*) AS cnt
       FROM test.staff
       GROUP BY job_id
     ) s2 ON ( s2.job_id = s1.job_id )
JOIN test.job j on(j.id = s1.job_id)
ORDER BY s2.cnt DESC ,s1.id;

id  name    job_id  job
1   张三      1       开发
4   赵六      1       开发
7   周九      1       开发
9   郑零      1       开发
2   李四      2       测试
5   钱七      2       测试
8   吴十      2       测试
3   王五      3       销售
6   孙八      3       销售
9 年前
回复了 MCC 创建的主题 » python manage.py startapp name1报错,求助啊!

安装 libsqlite3-dev

9 年前
回复了 MCC 创建的主题 » 新手有个问题想请教一下

如果自己拼sql mysql就

select * from (
    SELECT * FROM test.sleep_news order by -date)
as Subquery group by cat_id;

其他如果有with的就更好弄了,写得可以更美一些。

要是不在乎查询多次的话直接

results = {}
    Categories = Category.objects.all()
    for category in Categories:
        news = News.objects.filter(cat=category).order_by('-date')[0]
        results[category] = news

有些云服务居然是用查询sql次数来收费的我就不吐槽了。。

9 年前
回复了 MCC 创建的主题 » 新手有个问题想请教一下
results = News.objects.all().order_by('cat', '-date').annotate(Count('cat'))
    items = {}
    for result in results:
        print result.cat,result.title
        if not result.cat in items:
            items[result.cat] = result

distinct不太好用,就这样将就了……或者不要应用django的orm 自己拼sql或者SQLAlchemy

9 年前
回复了 MCC 创建的主题 » static目录无法找到?

@痴狂的剑 这个2回事,具体看文档 https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-STATICFILES_FINDERS

9 年前
回复了 MCC 创建的主题 » static目录无法找到?
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

报的什么错

9 年前
回复了 MCC 创建的主题 » python的list的sort方法和 快速排序比较 哪个更快?

我觉得。。。。取决于快排的算法是怎么写的。。。我这写得也太失败了。。

import time
import random
import uuid

def QuickSort(list):
    result = list
    sort_list = [[0, len(result) - 1]]
    while sort_list:
        start, end = sort_list.pop()
        if start + 1 == end:
            if result[start] > result[end]:
                result[start], result[end] = result[end], result[start]
            continue
        pivot = result[start]
        start = start
        left_list = []
        right_list = []
        for i in range(start + 1, end + 1):
            if result[i] < pivot:
                left_list.append(result[i])
            else:
                right_list.append(result[i])
        left_start = start
        left_end = left_start + len(left_list) - 1
        if left_start < left_end:
            sort_list.append([left_start, left_end])
        right_start = start + len(left_list) + 1
        right_end = right_start + len(right_list) - 1
        if right_start < right_end:
            sort_list.append([right_start, right_end])
        result = result[:start] + left_list + \
            [pivot] + right_list + result[end + 1:]
    return result

def comp(list):
    t1 = time.time()
    a1 = QuickSort(list)
    t2 = time.time()
    a2 = sorted(list)
    t3 = time.time()
    list.sort()
    a3 = list
    t4 = time.time()
    print 'quick', t2 - t1, '\t',
    print 'sorted', t3 - t2, '\t',
    print 'sort', t4 - t3,
    print a1 == a2 == a3

comp([random.random() for i in range(100000)])
comp([uuid.uuid1() for i in range(100000)])
comp([100000 - i for i in range(100000)])

quick 0.973999977112    sorted 0.00300002098083     sort 0.00300002098083 True
quick 57.228000164  sorted 0.00699996948242     sort 0.00600004196167 True
quick 13.3680000305     sorted 0.000999927520752    sort 0.0 True
[Finished in 72.0s]
9 年前
回复了 MCC 创建的主题 » Django个人博客终于搞定,附上Github地址

@yanglao745 https://github.com/tmacjx/my_site/blob/master/requirement.txt