下面是我尝试根据某些值进行修改的对象结构
from django.db.models import Manager, Model, CharField, DateTimeField, ForeignKey, ManyToManyField, PROTECT
from django.urls import reverse
class Author(Model):
name = CharField()
books = ManyToManyField(
to = 'Book',
related_name = 'books')
def natural_key(self):
return (self.name)
class BookManager(Manager):
def get_by_natural_key(self, title, release_date, author):
return self.get_or_create(
title = title,
release_date = release_date,
author = author)[0]
class Book(Model):
title = CharField()
release_date = DateTimeField()
author = ForeignKey(
to = 'Author',
on_delete = PROTECT)
objects = BookManager()
def natural_key(self):
return (self.title)
并且我正在根据条件修改export const PROJECT_PHASE = Object.freeze({
CONCEPT: { label: 'Concept', stepNumber: 0, disabled: false, description: '' },
SCHEMATIC: { label: 'Schematic', stepNumber: 1, disabled: false, description: '' },
DESIGN_DEVELOPMENT: {
label: 'Design Development',
stepNumber: 2,
disabled: false,
description: ''
},
CONSTRUCTION_DOCUMENTS: {
label: 'Construction Documents',
stepNumber: 3,
disabled: false,
description: ''
}
});
的值,并尝试返回相同的对象结构,但无法通过此操作并在If语句中收到类似description
的错误。
expression expected
请帮忙,我如何实现修改内部对象? 非常感谢!!!
答案 0 :(得分:2)
您看到该错误,因为在forEach中,您使用的是()
而不是{}
PROJECT_PHASE=Object.freeze({
CONCEPT: { label: 'Concept', stepNumber: 0, disabled: false, description: '' },
SCHEMATIC: { label: 'Schematic', stepNumber: 1, disabled: false, description: '' },
DESIGN_DEVELOPMENT: {
label: 'Design Development',
stepNumber: 2,
disabled: false,
description: ''
},
CONSTRUCTION_DOCUMENTS: {
label: 'Construction Documents',
stepNumber: 3,
disabled: false,
description: ''
}
});
currentStepNumber=3
Object.entries(PROJECT_PHASE).forEach(([key,value]) => {
if(value.stepNumber === currentStepNumber){
value.description = 'Current';
}
});
console.log(PROJECT_PHASE)
答案 1 :(得分:2)
const PROJECT_PHASE = Object.freeze({
CONCEPT: { label: 'Concept', stepNumber: 0, disabled: false, description: '' },
SCHEMATIC: { label: 'Schematic', stepNumber: 1, disabled: false, description: '' },
DESIGN_DEVELOPMENT: {
label: 'Design Development',
stepNumber: 2,
disabled: false,
description: ''
},
CONSTRUCTION_DOCUMENTS: {
label: 'Construction Documents',
stepNumber: 3,
disabled: false,
description: ''
}
});
const currentStepNumber = 2;
const alteredEntries = Object.entries(PROJECT_PHASE).map(([key,value]) => {
let newValue = value;
if(value.stepNumber === currentStepNumber){
newValue.description = 'Current';
}
return [key,newValue]
});
const alteredObject = Object.fromEntries(alteredEntries);
console.log(alteredObject);
这将创建PROJECT_PHASE
对象的副本,并根据需要进行修改。请注意,使用map
代替forEach
,然后将结果输入Object.fromEntries
答案 2 :(得分:1)
您使用出租车这种方式,您的代码中有错误。我在这里使用currentStepNumber是3
Object.entries(PROJECT_PHASE).forEach(([key,value]) => {
if(value.stepNumber === 3){
value.description = 'Current';
}
});