Django - on_delete = models.PROTECT无法正常工作

时间:2016-12-29 05:27:26

标签: python django

你好朋友,我需要帮助,

我是python和Django的新手

这次我正在构建我的应用,并且我尝试使用on_delete=models.PROTECT它工作正常,但我想替换我的模板ProtectedError以获取任何消息。

我该怎么做?

我有这样的事情:

grupos模型

class grupos(models.Model):
    nombre_grupo = models.CharField(max_length=100)
    nombre_puerto = models.ForeignKey(puerto, on_delete=models.PROTECT)


    def __unicode__(self):
        return self.nombre_grupo

    def __str__(self):
        return self.nombre_grupo

正如你所看到的那样依赖性,如果我创建了puerto,那么我就不会删除puerto这样的罚款和那个&#39} ; s工作但我得到模板错误,我想要一个msg而不是那个。

这是我的puerto删除视图:

Puerto views.py

def delete(request, id):
    # I want the message here..... (such as messages.warning or something)
    note = get_object_or_404(puerto, pk=id).delete()
    messages.error(request, 'This puerto has been deleted.')
    return redirect('/puertot')

例如,我想要messages.warning(request, 'You can't delete this because it's being used by grupos')

之类的东西

模板错误:

  

ProtectedError at / delete / 59 /("无法删除某些模型实例   '波多黎各'因为它们是通过受保护的外键引用的:   ' grupos.nombre_puerto'",]>)

我试图找出如何管理这个但没有线索...

我该怎么做?

谢谢...!

1 个答案:

答案 0 :(得分:2)

使用尝试/除来解决异常问题。

set_time_limit(0);

$mageFilename = 'app/Mage.php';
require_once $mageFilename;
Mage::setIsDeveloperMode(true);
ini_set('display_errors', 1);
umask(0);
Mage::app('admin');
Mage::register('isSecureArea', 1);

 try{

$csv = new Varien_File_Csv();
$file = 'set_products_with_weight.csv';
$products = $csv->getData($file);
$count = 0;

$resource = Mage::getSingleton('core/resource');
$readConnection = $resource->getConnection('core_read');
$writeConnection = $resource->getConnection('core_write');

foreach($products as $product)
{

    $weight = (float) $product[1];

    $query = 'UPDATE catalog_product_entity_decimal set value = '.$weight.' WHERE attribute_id = 80 AND entity_id IN (SELECT entity_id FROM catalog_product_entity where sku ="'.$product[0].'")';
    $results = $writeConnection->query($query);


}

} catch(Exception $e) {

    print_r($e);

}