Где django менеджер должен кодировать живой?

В дополнение к вероятному броску чего-то произошел из станд.:: исключение необходимо бросить анонимные временные файлы и выгоду ссылкой:

void Foo::Bar(){
  if(!QueryPerformanceTimer(&m_baz)){
    throw std::string("it's the end of the world!");
  }
}

void Foo:Caller(){
  try{
    this->Bar();// should throw
  }catch(std::string& caught){ // not quite sure the syntax is ok here...
    std::cout<<"Got "<
  • необходимо бросить анонимные временные файлы так соглашения о компиляторе с объектным временем жизни того, что Вы бросаете - при броске чего-то новый редактор от "кучи" кто-то еще должен освободить вещь.
  • необходимо поймать ссылки для предотвращения объекта, режущего

.

Видят "Эффективный C++ Meyer's - 3-й выпуск" для деталей или посещают https://www.securecoding.cert.org/.../ERR02-A. + Throw+anonymous+temporaries+and+catch+by+reference

22
задан Taylor Edmiston 19 October 2016 в 02:46
поделиться

4 ответа

Я предпочитаю хранить свои модели в models.py и менеджеры в manager.py (формы в forms.py) в одном приложении. Что касается более общих менеджеров, я предпочитаю хранить их в core.managers, если их можно повторно использовать для других приложений. В некоторых наших более крупных приложениях с models / modelname.py, которые будут содержать менеджер и код модели, который не кажется плохим.

28
ответ дан 29 November 2019 в 04:26
поделиться

Your best bet with a large set of models is to use django modules to your advantage, and simply create a folder named models. Move your old models.py into this models folder, and rename it __init__.py. This will allow you to then separate each model into more specific files inside of this model folder.

You would then only need to import each model into your __init__.py's namespace.

So, for instance, you might want to separate it into:

yourapp/
    models/
        __init__.py # This file should import anything from your other files in this directory
        basic.py # Just an example name
        morespecificmodels.py # Just an example name
        managers.py # Might want to separate your manager into this

Then your __init__.py can just be:

from basic import * # You should replace * with each models name, most likely.
from managers import YourManager # Whatever your manager is called.

This is the structure that I use when my model files get huge, however I try to separate things into more pluggable apps as often as possible - so this is rarely used by me.

Hope this helps.

9
ответ дан 29 November 2019 в 04:26
поделиться

I always place mine in managers.py. If you have a circular import issue remember that a) You can reference the model class for a manager at self.model, and b) You can do imports inside of functions.

6
ответ дан 29 November 2019 в 04:26
поделиться

При создании приложений Django я для создания файла [название модели] .py только с конкретным кодом модели, кодом менеджера, а иногда и кодом формы, и использовал файл __init__.py для импорта, а затем все в каталоге моделей. Это помогло мне, по крайней мере, сохранить управляемость.

3
ответ дан 29 November 2019 в 04:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: