小编Dhi*_*aTN的帖子

Django:模型之间的参考

救命!

我有以下两种型号:

class Account(models.Model):
    username = models.OneToOneField(User, primary_key=True, unique=True)
    receiveaddress = models.CharField(max_length=40, blank=True, null=True, unique=True)
    balance = models.DecimalField(max_digits=16, decimal_places=8, default=0)

    def __str__(self):
        return str(self.username)


class Deposits(models.Model): 
    receiveaddress = models.CharField(max_length=40, blank=True, null=True, unique=True)
    amount = models.DecimalField(max_digits=16, decimal_places=8, default=0)

    user = ?????????????????

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    confirmed = models.BooleanField(default=False)
    accounted = models.BooleanField(default=False)  

    def __str__(self):
        return str(self.receiveaddress)
Run Code Online (Sandbox Code Playgroud)

示例: 可视化

我的问题:

我希望"Deposits.user" 自动引用此"receiveaddress"所属的用户.在这个例子中,那是TIM.我浪费了6个小时试图搞清楚,我做错了什么?

提前致谢.

python database django django-models

5
推荐指数
1
解决办法
77
查看次数

MongoEngine 删除文档

我有以下 MongoEngine 文档

{
    '_id': 'some_id',
    'data': 'some_data'
}
Run Code Online (Sandbox Code Playgroud)

如何delete使用 MongoEngine 编写此文档?

我试过的:

import my_collection

obj = my_collection.MyCol.objects.get(_id='some_id')
# obj is correctly found - let's continue

obj.delete()
# mongoengine.errors.ValidationError: 'None' is not a valid ObjectId

obj.delete('some_id')
# TypeError: delete() takes 1 positional argument but 2 were given

obj.delete(_id='some_id')
# mongoengine.errors.ValidationError: 'None' is not a valid ObjectId
Run Code Online (Sandbox Code Playgroud)

--注意

奇怪的是,以下工作完美:

my_collection.MyCol.objects.delete()
# delete all documents in the collection
Run Code Online (Sandbox Code Playgroud)

但是我已经关注了MongoEngine文档,但仍然无法仅删除一个特定的文档

python mongodb mongoengine

5
推荐指数
2
解决办法
4708
查看次数

如何将一个表单向导嵌入另一个表单向导中?

我正在web-app使用Django v1.9 实现一个.我需要部署和配置网站尽可能万无一失.

所以我想实现首次使用场景,它允许站点管理员通过站点本身配置站点.

显而易见的候选者是表单向导.

该站点需要配置几个资源.它可以具有每个资源的多个实例,但每个资源必须至少有一个实例.

因此,最小的首次使用序列可能是:

  1. 配置ResourceA的实例
  2. 配置ResourceB的实例
  3. 使这些成为活动实例.
  4. 做其他一次性设置

稍后,管理员需要为这些资源定义其他实例,上面的步骤1和步骤2足够复杂,每个都需要自己保证FormWizard; 特别是因为它们需要独立使用来配置每种资源类型的其他实例.

这意味着我的第一个使用场景实际上是

  • 启动第一次使用向导
    • 运行"添加资源1实例"向导
    • 运行"添加资源2实例"向导
    • 在其他几种形式上做其他一次性的东西
  • 结束首次使用向导

我的心告诉我,我应该能够以这种方式嵌套向导,获得良好的功能重用.Django和Python一般都是关于DRY的.

但我很难解决如何解决问题.我一直在谷歌搜索和试验足够的时间,觉得这里没有任何东西.

可以这样做吗?如果是这样,怎么样?

编辑:

试着澄清一下.假设每个向导都有一个与之关联的基于函数的视图

def AddResource1view(request):
    # Display the pages of the wizard to build object 1
    # for model Resource1
    object1.save()
    return object1

def AddResource2view(request):
    # Display the pages of the wizard to build object 2
    # for model Resource2
    object2.save()
    return object2

def FirstUseView(request):
    config = SystemConfiguration()
    config.r1 = AddResource1view(request)
    config.r2 = …
Run Code Online (Sandbox Code Playgroud)

python django django-formwizard

5
推荐指数
0
解决办法
151
查看次数

找到在Group(Django渠道)中添加的所有用户(reply_channels)

我正在使用Django渠道小组来构建聊天系统,并希望获取聊天室中的所有用户.

集团提供以下方法:

  • Group("group_name").add(message.reply_channel)
  • Group("group_name").discard(message.reply_channel)
  • Group("group_name").send({"text": "My group message",})

但是没有什么可以找到Group中的所有用户(reply_channel).

谢谢

python django chat django-channels

5
推荐指数
1
解决办法
1029
查看次数

Django ArrayField的序列化转义了带有太多反斜杠的重音字符

Django为我们提供了ArrayField:一个PostgreSQL特定的模型字段,允许存储数据列表.

我用它来模拟Article对象:

authors = ArrayField(models.Charfield) 
title = models.CharField
Run Code Online (Sandbox Code Playgroud)

例如,这是数据库中的一个条目:

  • authors = {"PierreStévens","Jacques Dupont"}
  • title = Sur leterraincrétacédeLiège

我想将所有文章导出为JSON:

query_set = Article.objects.all()
articles_json = serialize('json', fields('authors', 'title')
Run Code Online (Sandbox Code Playgroud)

ArrayField"authors"的序列化使用四个反斜杠而不是两个反转字符"é".常规"标题"字段已正确转义.看看差异:

articles_json = {"title":"Sur le terrain cr\\u00e9tac\\u00e9 de Li\\u00e9ge", "authors": "[\\"Pierre St\\\\u00e9\\", "Jacques Dupont"]"}
Run Code Online (Sandbox Code Playgroud)

客户不理解这一点.为了使它工作,我只是搜索并替换字符串

articles_json = articles_json.replace('\\\\','\\')
Run Code Online (Sandbox Code Playgroud)

我真的不确定这个解决方法.你有没有试过这个问题?你是怎么解决的?

django postgresql encoding json

5
推荐指数
0
解决办法
215
查看次数

如何使用模型驱动/反应形式修改指令中的输入值

我想实现一个"TrimDirective",它使用Angular 2 RC 5和模型驱动/反应形式从输入字段中删除前导和尾随空格.

我设法更改输入字段的值,但是我没有在组件中获得新值myForm.valueChanges().

请参阅此plunker:http://plnkr.co/edit/ruzqCh?p = preview

当指令更改值时,如何触发formGroup的更新?

模板:

<form [formGroup]="myForm">
  <input formControlName="name" trim>
</form>
latest value: -{{ latestValue }}-
Run Code Online (Sandbox Code Playgroud)

组件:

@Component({
  selector: 'my-app',
  templateUrl: 'app/app.html'
})
export class AppComponent implements OnInit {

  private myForm: FormGroup;
  private latestValue: string;

  ngOnInit() {
    this.myForm = new FormGroup({
      name: new FormControl(),
    });
    this.myForm.valueChanges.subscribe(v => this.latestValue = v.name)
  }
}
Run Code Online (Sandbox Code Playgroud)

指令:

@Directive({
    selector: '[trim]'
})

export class TrimDirective {

    private el: any;

    constructor(
        el: ElementRef
    ){ …
Run Code Online (Sandbox Code Playgroud)

javascript angular2-forms angular2-directives angular

5
推荐指数
1
解决办法
1780
查看次数

外置硬盘上的Docker卷

我正在使用postgres映像在本地运行容器。我需要处理大量数据,并且我想为此使用外部硬盘驱动器。是否可以在外部硬盘驱动器上装载卷?我可以用Flocker完成我想要的吗?

我正在为Mac使用本机docker。

docker flocker

5
推荐指数
1
解决办法
5966
查看次数

python在导入鼠兔时没有模块名称pika

我安装了在mac上运行python的pika

sudo pip install pika==0.9.8
Run Code Online (Sandbox Code Playgroud)

我确定已安装,这是尝试重新安装时的响应,

Requirement already satisfied (use --upgrade to upgrade): pika==0.9.8 in /usr/local/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)

但是当我在*.py上导入鼠兔时,我得到了,

ImportError:没有名为pika的模块

我的python版本

python --version
Python 2.7.5
Run Code Online (Sandbox Code Playgroud)

如何使这个模块被Python识别?谢谢!

编辑1

我这样称之为导入

import pika
Run Code Online (Sandbox Code Playgroud)

这给出了错误,我可以用这个临时修复,

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)

那么如何使路径永久化?谢谢!

python pika python-pika

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

如何访问外键数据而无需在 Wagtail(django) 中进行额外查询

我有以下两个类,我app.models正在使用 wagtail API 将数据作为 json

class AuthorMeta(Page):
    author=models.OneToOneField(User)
    city = models.ForeignKey('Cities', related_name='related_author')

class Cities(Page):
    name = models.CharField(max_length=30)
Run Code Online (Sandbox Code Playgroud)

因此,当我尝试时/api/v1/pages/?type=dashboard.AuthorMeta&fields=title,city,它返回以下数据:

{
    "meta": {
        "total_count": 1
    },
    "pages": [
        {
            "id": 11,
            "meta": {
                "type": "dashboard.AuthorMeta",
                "detail_url": "http://localhost:8000/api/v1/pages/11/"
            },
            "title": "Suneet Choudhary",
            "city": {
                "id": 10,
                "meta": {
                    "type": "dashboard.Cities",
                    "detail_url": "http://localhost:8000/api/v1/pages/10/"
                }
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

在城市字段中,它返回城市的idmeta。如何在不进行额外查询的情况下在此处的响应中获取城市名称?:/

我在文档中找不到任何解决方案。我错过了什么吗?

python django django-models wagtail

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

放置请求在curl中工作,但不在Python中工作

我正在尝试使用curl制作一个'put'方法,一切工作正常,并且我得到了JSON:

curl -X PUT -d '[{"foo":"more_foo"}]' http://ip:6001/whatever?api_key=whatever
Run Code Online (Sandbox Code Playgroud)

但是由于某些原因,如下所示使用python requests模块:

import requests
url = 'http://ip:6001/whatever?api_key=whatever'

a = requests.put(url, data={"foo":"more_foo"})

print(a.text)
print(a.status_code)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

500内部服务器错误

内部服务器错误

服务器遇到内部错误,无法完成您的请求。服务器超载或应用程序中有错误。

注意:服务器已启动并正在运行。

python http python-2.7 python-3.x python-requests

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