小编M.j*_*vid的帖子

Django migrations/South:新列从同一记录中获取另一个值的默认值

我想在现有表中添加一个新列,但我想根据已有的数据给它一个默认值:

例如,每条记录都有一个start_date.现在我想添加一个open_until列,我想用start_date每个现有记录的值填充它.(即将到来的记录将能够选择不同的价值)

有友好的方式来做到这一点吗?

sql migration django relational django-south

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

django:覆盖 get_Form 内联

我想覆盖get_form表格管理中的 以便按当前用户进行过滤。问题是我收到一个错误:

 object has no attribute 'current_user'
Run Code Online (Sandbox Code Playgroud)
  • 管理员.py

    class InvoiceDetail(admin.TabularAdmin):
        form = InvoiceDetailForm
        model = fa_invoice_lines
    
        def get_form(self, request, obj=None, **kwargs):
            form = super(InvoiceDetail, self).get_form(request, obj, **kwargs)
            form.current_user = request.user
            return form
    
    class Invoice(admin.ModelAdmin)
        form = InvoiceForm
        inlines =   [InvoiceDetail,]
    
    Run Code Online (Sandbox Code Playgroud)
  • 表格.py

    class InvoiceDetailForm(forms.ModelForm):
        def __init__(self, *args, **kwargs):
            super(InvoiceDetailForm, self).__init__(*args, **kwargs)
            self.fields['item'].queryset = fa_items.objects.filter(tenant=self.current_user)
    
        class Meta:
            model = fa_invoice_lines
    
    Run Code Online (Sandbox Code Playgroud)

我在非内联中使用了相同的策略并且它有效似乎没有调用get_form

python django django-admin inlines

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

Django 1.8:如何在当前项目中使用第一个3rd Party Fork?

我对开发仍然很陌生...

我想简化django-friendship并添加一些不同的功能。我已经在GitHub上进行了分叉。我不确定下一步该怎么做。

我的django-friendship仓库的本地副本应该放在哪里?我应该将其作为应用程序集成到当前的Django项目中,还是将其设置为单独的项目?在这种情况下,如何在开发时将我的主要Django项目设置为将其用作应用程序?

我可以从这里学到的任何指导或其他资源将不胜感激。

谢谢!

python django django-apps

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

使用多数据库的 Django 事务

我有三个数据库,我想根据一个请求在事务中向它们添加数据。

\n\n

例如我的代码。

\n\n
@transaction.commit_manually\ndef my_view(request):\n    try:\n        MyModel_one(...).save(using='default')\n        MyModel_two(...).save(using='db_one')\n        MyModel_three(...).save(using='db_two') # <-- for example we make exception here (duplicate data)\n    except IntegrityError:\n        transaction.rollback()\n        transaction.rollback(using='db_one')\n        transaction.rollback(using='db_two')\n        return ...\n    transaction.commit()\n    transaction.commit(using='db_one')\n    transaction.commit(using='db_two')\n    return ...\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果:

\n\n
    \n
  1. MyModel_one \xe2\x80\x94 数据未保存
  2. \n
  3. MyModel_two \xe2\x80\x94 数据已保存(我不明白为什么)
  4. \n
  5. MyModel_two \xe2\x80\x94 数据未保存,因为希望错误
  6. \n
\n\n

问题:为什么交易在这里不起作用?我该怎么做才能获得工作交易?

\n\n

(我尝试使用其他方法,但没有成功)\n(而且我知道这不是漂亮的代码,但对于理解问题来说非常简单)

\n\n

Django 1.7.7\nPython 2.7

\n\n

数据库:\n默认 \xe2\x80\x94 postgres\ndb_one \xe2\x80\x94 mysql\ndb_two \xe2\x80\x94 mysql

\n

python django django-models django-orm

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

删除用户的权限(django)

我有一个问题,即在视图中甚至在shell中删除用户的权限.让我解释一下我的问题:

我在shell中做了那些测试:

org = Organisateur.objects.get(user__username__contains="ghj") 
content_type = ContentType.objects.get_for_model(Tournoi)
Run Code Online (Sandbox Code Playgroud)

Tournoi是模型的名称

permission_ecriture = 'ecriture_Palaiseau'
permission = Permission.objects.get(content_type=content_type, codename=permission_ecriture)
org.user.user_permissions.remove(permission)`
Run Code Online (Sandbox Code Playgroud)

但是当我写道:

org.user.has_perm('inscription.ecriture_Palaiseau')` 
Run Code Online (Sandbox Code Playgroud)

它返回True

但是当我重写时:

org = Organisateur.objects.get(user__username__contains="ghj")
org.user.has_perm('inscription.ecriture_Palaiseau')`
Run Code Online (Sandbox Code Playgroud)

它返回False

这真的很奇怪.它为什么会这样?

在我的观点中,即使我写了,似乎也没有删除权限:

org = Organisateur.objects.get(user__username__contains="ghj")
Run Code Online (Sandbox Code Playgroud)

(删除权限后,用户仍然拥有它)

我想要做的是删除用户的权限,并在之后立即向同一用户添加另一个权限.但每次我这样做,用户仍然有"删除权限"......

非常感谢你

我期待很快收到你们的回复.

python django permissions django-permissions

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

Django ModelForm 不允许必填字段的空值?

我有这个领域的模型......

fulfillment_flag = models.CharField(pgettext_lazy('Delivery group field', 'Fulfillment Flag'), max_length=255,
                                        null=True, choices=FULFILLMENT_FLAG_CHOICES)
Run Code Online (Sandbox Code Playgroud)

这是我的表格...

class FulfillmentFlagForm(forms.ModelForm):

    class Meta:
        model = DeliveryGroup
        fields = ['fulfillment_flag', ]

    def clean_fulfillment_flag(self):
        return self.cleaned_data['fulfillment_flag'] or None
Run Code Online (Sandbox Code Playgroud)

我有一个 HTML 选择下拉列表,顶部有一个空白值选项。每次我选择空白选项并单击保存时,表单都不会将其保存为我的模型上的 Null 值。它会保存任何其他字段,但不会保存空白字段。它会告诉我该字段也是必需的。

如何告诉表单将​​空白值保存为 Null?

python django django-models django-forms

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

go concurrency 所有 goroutine 都睡着了 - 死锁

很抱歉这个菜鸟问题,但我很难把头放在 go 的并发部分。基本上,下面的这个程序是我正在编写的一个更大的程序的简化版本,因此我想保持类似于下面的结构。

基本上,我想addCount(..)使用无缓冲通道并发运行而不是等待 4 秒,并且当 中的所有元素int_slice都被处理后,我想对它们进行另一个操作。然而,这个程序以“恐慌:关闭通道关闭”结束,如果我取消关闭通道,我会得到我期待的输出,但它会恐慌:“致命错误:所有 goroutines 都睡着了 - 死锁”

在这种情况下如何正确实现并发部分?

提前致谢!

package main

import (
    "fmt"
    "time"
)

func addCount(num int, counter chan<- int) {
    time.Sleep(time.Second * 2)
    counter <- num * 2
}

func main() {
    counter := make(chan int)
    int_slice := []int{2, 4}

    for _, item := range int_slice {
        go addCount(item, counter)
        close(counter)
    }

    for item := range counter {
        fmt.Println(item)
    }
}
Run Code Online (Sandbox Code Playgroud)

concurrency go

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

TypeError get_queryset() 缺少 1 个必需的位置参数:'pk'

我正在开发一个会计应用程序...

我有一个名为“组”的模型,我想在特定公司内制作它......

我的意思是不同的公司会有不同的组

所以,我在列表视图中尝试过类似的事情

class group1ListView(LoginRequiredMixin,ListView):
    model = group1

    def get_queryset(self, pk):
        company_details = get_object_or_404(company, pk=pk)
        return self.model.objects.all().filter(Q(User=self.request.user) & Q(Company=company_details.id))
Run Code Online (Sandbox Code Playgroud)

用户和公司字段通过我的 group1 模型中的外键相关。

但出现此错误:

TypeError get_queryset() 缺少 1 个必需的位置参数:'pk'

谁能告诉我我在这方面做错了什么?

谢谢

python django django-models django-views

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

龙卷风圣殿系统中的block.super

龙卷风中,我有一个带有x块的基本模板,如下所示:

{% block x %} x {% end %}
Run Code Online (Sandbox Code Playgroud)

在从基本模板继承的第二个模板中,我想通过新值将旧值与新值混合,例如django template tag,类似于下面的代码:

{% block x %} » {{ block.super }} « {% endblock %}
Run Code Online (Sandbox Code Playgroud)

但是在龙卷风中我不能使用{{ block.super }}

龙卷风框架已经等于Django block.super

python django templates tornado

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

null = True和on_delete = models.SET_NULL django之间的区别

我有一个领域

owner = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
Run Code Online (Sandbox Code Playgroud)

模型字段上的这两个属性有什么区别?

python django

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