对于覆盖save方法所需的所有Django需求,我一直save()在我的模型中使用.突然间,当我查找需要一点额外耀斑的东西时,有人建议save_model()在我的管理课程中重写.
我在两者上找到了文档,我立刻注意到论点不同.是save_model()在对模型从管理保存的唯一的叫什么?并且save()只要模型被保存就调用该方法?
UPDATE
所以我发现从管理员保存时."save"和"save_model()"都被调用.似乎首先调用'save_model()'.在我的特定应用程序中,我使用pre_save信号,并且'save()'覆盖.现在我想添加'save_model()'覆盖.这是所有这些保存覆盖和信号的交互和顺序让我感到困惑.
我正在尝试将数组细分为数组对.
例如:["A","B","C","D"]应该成为[["A","B"],["C","D"].
我相信我已经成功了arg.each_slice(2).to_a.但是,如果我arg.length在新阵列上做的话,我仍然会得到4.我希望得到2(在上面的例子中).
最后,我希望能够调用的第一个元素arg是["A","B"],但在此刻,我仍然得到"A".
对于具有特定关系的Django应用程序,我感到困惑.我一直在查看以下数据库模式:http://www.databaseanswers.org/data%5Fmodels/customers_and_orders/index.htm
我对Customer_addresses与Customers和Addresses之间的关系感到困惑.
我知道:
这是否等同于多对多的关系?
当我在django中构建模型时,我有(简化):
class Customer_Address(models.Model):
customer = models.ManyToManyField('inventory.Customer')
address = models.ManyToManyField('inventory.Address')
Run Code Online (Sandbox Code Playgroud)
这是正确的吗?或者这更有意义:
class Customer_Address(models.Model):
customer = models.ForeignKeyField('inventory.Customer')
address = models.ManyToManyField('inventory.Address')
Run Code Online (Sandbox Code Playgroud)
更新的问题:
基于这种想法,它是一个多对多的关系.有一个ManyToMany关系,需要两个ManyToManyFields吗?
基于以下内容:http: //en.wikipedia.org/wiki/Many-to-many_%28data_model%29
由于Django支持ManyToManyFields,我甚至不需要联结表吗?如果我使用联结表(Customer_addresses),文章似乎暗示使用两个OneToMany关系,这不仅仅是这样的两个外键?
class Customer_Address(models.Model):
customer = models.ForeignKeyField('inventory.Customer')
address = models.ForgeinKeyField('inventory.Address')
Run Code Online (Sandbox Code Playgroud)
更新的问题:
现在我们知道Django构建了中间表,并且不需要表Customer_Addresses.哪个表应该有ManyToManyfield?客户表?还是地址表?
示例:https://docs.djangoproject.com/en/dev/topics/db/models/#intermediary-manytomany
在Person/Groups示例中.. Groups具有ManyToManyField.是否有任何原因无法在Person表中定义ManyToManyfield?
我有一个预先保存的信号监听器,可以更新第二个模型.与此示例相同:
我想让用户知道监听器成功更新了模型并提供了一些信息.通常,我认为我可以使用django具有的内置消息功能.问题是信号无法访问"请求".所以我看不出如何使用内置的Django Messages Framework.
是否有一种已知的方法可以在管理员中向用户发送消息?也许通过覆盖其中一个模型的save()方法?(发送信号或接收的那个),但我认为save()方法也不能访问'request'?
这必须是其他人想要做的事情吗?
我试图在我自己的django项目中实现它时,尝试使用python-django应用程序调试JS/Jquery问题.我使用浏览器的开发者控制台来检索以下错误:
TypeError: 'undefined' is not a function (evaluating '$(this).yourlabsWidget()')
Run Code Online (Sandbox Code Playgroud)
所以我去寻找函数'yourlabsWidget()的定义,它直接位于函数调用的上方.
$.fn.yourlabsWidget = function(overrides) { ... }
$(document).ready(function() {
$('.autocomplete-light-widget[data-bootstrap=normal]').live('initialize', function() {
$(this).yourlabsWidget();
});
Run Code Online (Sandbox Code Playgroud)
我对javascript或jquery知之甚少,所以我在这里完全不知所措.假设语法上没有任何错误,像这样的问题是否意味着jquery无法正常工作?我知道这不是很多信息,但我会添加所需的任何其他相关信息.
应用程序和特定文件给我带来麻烦(分别),
我已经在我的开发服务器上使用它自己的测试项目测试了应用程序,并且它在自己的测试项目中开箱即用.但是,如果我使用一个有效的测试应用程序并将其安装到我自己的django项目中,它将不再有效.
更新:
整个功能定义:
$.fn.yourlabsWidget = function(overrides) {
var overrides = overrides ? overrides : {};
if (this.data('widget') == undefined) {
// Instanciate the widget
var widget = new yourlabs.Widget(this);
// Pares data-*
var data = this.data();
var dataOverrides = {autocompleteOptions: {}};
for (var key in data) {
if (!key) continue;
if (key.substr(0, 12) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用黄瓜来检查我的应用程序中的Ruby on Rails视图的内容.视图在表格中显示信息.我希望能够只检查该表的一列的内容.当我使用Web步骤定义时"I should see",它会检查整个页面.这样做有什么简单的方法吗?
例如: column.should have_content("text")