Другое решение состояло бы в том, чтобы сделать что-то вроде этого:
from datetime import datetime
def last_day_of_month(year, month):
""" Work out the last day of the month """
last_days = [31, 30, 29, 28, 27]
for i in last_days:
try:
end = datetime(year, month, i)
except ValueError:
continue
else:
return end.date()
return None
И использование функция как это:
>>>
>>> last_day_of_month(2008, 2)
datetime.date(2008, 2, 29)
>>> last_day_of_month(2009, 2)
datetime.date(2009, 2, 28)
>>> last_day_of_month(2008, 11)
datetime.date(2008, 11, 30)
>>> last_day_of_month(2008, 12)
datetime.date(2008, 12, 31)
Большинство ORM будут вести себя подобным образом.
Объект в кэше не обновляется из базы данных ( дополнительно читать то, что не нужно). Также считайте объектную модель и постоянство отдельными. т.е. поддерживайте согласованность своей объектной модели и не полагайтесь на механизм сохранения, который сделает это за вас.
Поэтому, если вы хотите, чтобы объект был добавлен в коллекцию, сделайте это в коде "setParent".
] Лучшая практика в этом случае - заставить одну сторону отношений делать всю работу и позволить другой стороне отложить ее. Также я бы предложил использовать доступ к полю, а не к методу, таким образом вы можете настраивать методы с большей гибкостью.
Добавьте метод к родительскому элементу с именем addChild
public void addChild(Child child) {
child.setParent0(this);
getChildren().add(individualNeed);
}
, а затем сделайте setParent в Child:
public void setParent(Parent parent) {
parent.addChild(child);
}
setParent0 в Child является свойство stter для родительского элемента для дочернего.
public void setParent0(Parent parent) {
this.parent = parent;
}
Я бы также предложил, чтобы метод getChildren возвращал неизменяемую коллекцию, чтобы разработчики не