小编Pro*_*eus的帖子

Django:显示用户名而不是ID,怎么样?

我有以下序列化程序类.

class ProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        fields = ('id', 'name', 'active', 'type', 'user')
Run Code Online (Sandbox Code Playgroud)

列出所有配置文件时,用户字段显示用户ID.如何更改此项以显示user.username?我知道我的模型我只是将它添加到我的元类中,但是没有创建用户模型(它是Django的一部分).在调用用户显示用户名而不是id时,如何告诉Django?

非常感谢.

django django-rest-framework

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

Django是这个链接任务吗?

我有一个芹菜任务,将消息添加到数据库,如下所示:

class ProcessRequests(Task):

    def run(self, batch):

        for e in q:
            msg = Message.objects.create(
                recipient_number=e.mobile,
                content=batch.content,
                sender=e.contact_owner,
                billee=batch.user,
                sender_name=batch.sender_name
            )
            gateway = Gateway.objects.get(pk=2)
            msg.send(gateway)
Run Code Online (Sandbox Code Playgroud)

然后在 msg.send(网关)模型中有另一个任务实际发送消息并运行它:

class SendMessage(Task):
    name = "Sending SMS"
    max_retries = 10
    default_retry_delay = 3

    def run(self, message_id, gateway_id=None, **kwargs):
        logging.debug("About to send a message.")


        so some stuff here

        logging.debug("Done sending message.")
Run Code Online (Sandbox Code Playgroud)

这一切都很好(测试了超过1000条消息),但我在某处读到你不应该将任务链接在一起,但这不是链接,对吧?我不等待一个人完成另一个可以运行.

这个例子在性能等方面是否可以?

发送是这样的:

def send(self, message):
    """
    Use this gateway to send a message.

    If ``djcelery`` is installed, then we assume …
Run Code Online (Sandbox Code Playgroud)

django celery

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

使用ui-router的AngularJS init变量

当我想在第一次启动控制器时初始化变量时,我在我的视图中执行此操作

<div ng-controller="testCtrl" ng-init="<%some var from server %>"> <div>
Run Code Online (Sandbox Code Playgroud)

但是,我现在正在使用这样的ui-router:

 .state('index', {

            url: "/",
            templateUrl: "/register-form.html",
            controller: "testCtrl"
        })
Run Code Online (Sandbox Code Playgroud)

因为我不再呈现等待<div ng-controller=我如何仍然初始化并<%some var from server %>从模板中传递我?register-form.html不再具有控制器标签,因为ui-router负责处理它.

javascript angularjs

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

Python列表值被覆盖,为什么?

我有一个收件人查询包含两个ID为1和2的收件人:我遍历每个收件人以构建json输出:

    data = []
    this_tem = {}

    for item in recipients:
        this_tem['recipient_id'] = item.pk
        data.append(this_tem)

    return HttpResponse(json.dumps(data), mimetype='application/json')
Run Code Online (Sandbox Code Playgroud)

这给了我:

[
    {
        "recipient_id": 2,
    },
    {
        "recipient_id": 2,
    }
]
Run Code Online (Sandbox Code Playgroud)

你可以看到它应该是recipient_id 1,recipient_id 2然而,我的循环覆盖了值,为什么?

python django

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

我的Django模型的权限

我有一个模型叫做Logs

class Logs(models.Model):
    entry = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)

一些用户可以管理日志,其他用户可以编辑,其余用户只能查看。您将如何在Django中处理此类权限?

我当时想添加一个新many-to-many字段,一个用于管理员,另一个用于编辑,然后在保存功能中检查哪个用户属于哪个组。

但是,这似乎是静态且不好的,我可以以某种方式使用Django的内置权限吗?还有哪些其他解决方案,软件包,解决此问题的最佳方法是什么?

我已经看到您可以在Django中创建自定义权限,即

permission = Permission.objects.create(codename='can_publish',
                                       name='Can Publish Logs',
                                       content_type=content_type)
Run Code Online (Sandbox Code Playgroud)

但是Logs我将如何检查权限,这将在Save()方法中完成。

python django django-permissions

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

从META类动态创建related_name

我的大多数Django模型使用相同的User Mixin,因此我想动态创建related_name该字段.

我希望它是类名,在主模型的元类中TestModel成为test_models甚至可能是一个集合名称.

我看过了,self__class__.__name__但这给了我User类的名字.

是否有可能做下面的事情,如果是这样的话......

class User(models.Model):
    user = models.ForeignKey(USER, related_name=META.related_name)

    class Meta:
        abstract = True


class TestModel(User):
    title = models.CharField(max_length=80)

    class Meta:
        related_name = "test_model"
Run Code Online (Sandbox Code Playgroud)

python django django-models

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

使用Boto3和Python如何公开文件夹

我想img在我的私有桶public中创建一个已经存在的文件夹.我正在使用Boto3.我只想公开这个文件夹,而不是使用脚本.

这就是我目前正在连接到水桶以及我有多远......

ACCESS_KEY_ID = 'xxxxx'
ACCESS_KEY_SECRET = 'xxxx'
bucket_name = 'mybucket'
sourceDir = "../../docs/buildHTML/html/"
destDir = ''

r = boto3.setup_default_session(region_name='eu-west-1')
s3 = boto3.resource('s3', aws_access_key_id=ACCESS_KEY_ID, aws_secret_access_key=ACCESS_KEY_SECRET)
bucket = s3.Bucket(bucket_name)
Run Code Online (Sandbox Code Playgroud)

所以我有水桶,这是有效的.我现在如何使img已存在的文件夹公开?

python boto amazon-web-services python-3.x boto3

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

在Mac OSX上卸载Redis.安装更新后,旧版本正在运行

在Mac上,如何找到旧版本的Redis并将其完全卸载?

我正在使用OSX并使用以下命令安装Redis brew install redis.brew州安装的版本redis-3.0.7.

但是,当我运行命令时:redis-server输出表明它正在运行Redis 2.6.9 (00000000/0) 64 bit.我不知道这个版本的安装位置.

我试图直接下载redis并使用sudo make uninstall但得到了这个错误:

cd src && /Applications/Xcode.app/Contents/Developer/usr/bin/make uninstall
make[1]: *** No rule to make target `uninstall'.  Stop.
make: *** [uninstall] Error 2
Run Code Online (Sandbox Code Playgroud)

macos homebrew redis

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

Pythonic方法检查kwargs中的所有值是否为字符串"false"

就拿kwargs即:send_members,send_companies,send_reviewers,每个包含字符串'true''false'.

如果每个中的所有kwargs都是'false',我想显示错误消息,例如:

if (kwargs['send_members'] == 'false' and kwargs['send_companies'] == 'false' and
    kwargs['send_reviewers'] == 'false'):
        raise SomeError('at least one keyword needs to be true')
Run Code Online (Sandbox Code Playgroud)

是否有Pythonic方法检查所有值kwargs是否相同,'false'?虽然上面的例子有效但是当我有10个时它会变得非常混乱kwargs.

python python-3.4

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

Django从数据库生成模型

我已经有一个预先存在的数据库但现在想要使用Django.有没有办法从我的数据库中自动生成Django需要的模型?例如,如果我已经有一个包含从另一个应用程序定义的表的数据库.

python django python-2.7

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