我正在尝试通过保存在具有namespace Custom\SalesRule\Model;
use Magento\SalesRule\Model\Rule\Action\Discount\CalculatorFactory;
use Magento\Framework\Event\ManagerInterface;
use Magento\SalesRule\Model\Utility;
use Magento\SalesRule\Model\Quote\ChildrenValidationLocator;
use Magento\SalesRule\Model\Rule\Action\Discount\DataFactory;
use Magento\SalesRule\Api\Data\RuleDiscountInterfaceFactory;
use Magento\SalesRule\Api\Data\DiscountDataInterfaceFactory;
class RulesApplier extends \Magento\SalesRule\Model\RulesApplier
{
/**
* custom validation before applying rule
*
* @param \Magento\SalesRule\Model\Rule\Action\Discount\CalculatorFactory\CalculatorFactory $calculatorFactory
* @param \Magento\Framework\Event\ManagerInterface $eventManager
* @param \Magento\SalesRule\Model\Utility $utility
* @param \Magento\SalesRule\Model\Quote\ChildrenValidationLocator|null $childrenValidationLocator
* @param DataFactory|null $discountDataFactory
* @param RuleDiscountInterfaceFactory|null $discountInterfaceFactory
* @param DiscountDataInterfaceFactory|null $discountDataInterfaceFactory
*/
public function __construct(
CalculatorFactory $calculatorFactory,
ManagerInterface $eventManager,
Utility $utility,
ChildrenValidationLocator $childrenValidationLocator = null,
DataFactory $discountDataFactory = null,
RuleDiscountInterfaceFactory $discountInterfaceFactory = null,
DiscountDataInterfaceFactory $discountDataInterfaceFactory = null
) {
parent::_construct(
$calculatorFactory,
$eventManager,
$utility,
$childrenValidationLocator,
$discountDataFactory,
$discountInterfaceFactory,
$discountDataInterfaceFactory
);
}
/**
* Apply rules to current order item
*
* @param \Magento\Quote\Model\Quote\Item\AbstractItem $item
* @param \Magento\SalesRule\Model\ResourceModel\Rule\Collection $rules
* @param bool $skipValidation
* @param mixed $couponCode
* @return array
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
public function applyRules($item, $rules, $skipValidation, $couponCode)
{
$address = $item->getAddress();
$appliedRuleIds = [];
/* @var $rule \Magento\SalesRule\Model\Rule */
foreach ($rules as $rule) {
if (!$this->validatorUtility->canProcessRule($rule, $address)) {
continue;
}
if (!$skipValidation && !$rule->getActions()->validate($item)) {
if (!$this->childrenValidationLocator->isChildrenValidationRequired($item)) {
continue;
}
$childItems = $item->getChildren();
$isContinue = true;
if (!empty($childItems)) {
foreach ($childItems as $childItem) {
if ($rule->getActions()->validate($childItem)) {
$isContinue = false;
}
}
}
if ($isContinue) {
continue;
}
}
$this->applyRule($item, $rule, $address, $couponCode);
$appliedRuleIds[$rule->getRuleId()] = $rule->getRuleId();
if ($rule->getStopRulesProcessing()) {
break;
}
}
return $appliedRuleIds;
}
的模型中的FileField上载文件。当我运行服务器时,发布似乎成功,但返回emptydict。应要求文件不存在。FILES。我浏览了以下链接:
1。Empty Request.FILES with Django Upload forms
2。Django JQuery Ajax File Upload。
3。Django form upload request.files empty
出现类似问题的仍然找不到解决方案。如果有人告诉我我要去哪里错了,我将不胜感激!
models.py
upload_to
views.py
class Document(models.Model):
'''Model for a document'''
name = models.CharField("Name", max_length=50)
record = models.ForeignKey(Record, on_delete=models.CASCADE, null=True, blank=True)
category = models.ForeignKey(FileCategory, on_delete=models.SET_NULL, null=True, blank=True)
uploader = models.ForeignKey(LocalUser, on_delete=models.SET_NULL, null=True, blank=True)
upload_date = models.DateTimeField("Hochgeladen am", auto_now=True)
file = models.FileField(upload_to=user_directory_path_2)
模板
def post_new_document(request):
print(request.FILES)
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid() or True:
instance = Document()
file = request.FILES.get('uploaded_document', None)
if not file:
return JsonResponse({'name': instance.file.name})
instance.file = file
instance.name = instance.file.name
print(request.FILES)
instance.save()
return render(request, 'records/record_detail.html', {'form':form})