{"title":"Γράφοντας δικές σας django-admin εντολές","version":"3.1","locale":"el","docname":"howto/custom-management-commands","url":"/el/3.1/howto/custom-management-commands/","canonical":"https://djangodocs.dev/el/3.1/howto/custom-management-commands/","summary":"Οι εφαρμογές μπορούν να κάνουν register τις δικές τους ενέργειες με το manage.py . Για παράδειγμα, ίσως να θέλετε να προσθέσετε μια manage.py ενέργεια για ένα…","html":"<span id=\"writing-custom-django-admin-commands\"></span><h1>Γράφοντας δικές σας <code class=\"docutils literal notranslate\">django-admin</code> εντολές<a class=\"heading-anchor\" href=\"#module-django.core.management\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Οι εφαρμογές μπορούν να κάνουν register τις δικές τους ενέργειες με το <code class=\"docutils literal notranslate\">manage.py</code>. Για παράδειγμα, ίσως να θέλετε να προσθέσετε μια <code class=\"docutils literal notranslate\">manage.py</code> ενέργεια για ένα Django app το οποίο προωθείτε για διανομή. Σε αυτό το άρθρο θα χτίσουμε μια δικιά μας εντολή, με το όνομα <code class=\"docutils literal notranslate\">closepoll</code>, για την εφαρμογή <code class=\"docutils literal notranslate\">polls</code> που φτιάξαμε στον <a class=\"reference internal\" href=\"/el/3.1/intro/tutorial01/\"><span class=\"doc\">οδηγό</span></a>.</p>\n<p>To do this, add a <code class=\"docutils literal notranslate\">management/commands</code> directory to the application. Django\nwill register a <code class=\"docutils literal notranslate\">manage.py</code> command for each Python module in that directory\nwhose name doesn’t begin with an underscore. For example:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>polls<span class=\"o\">/</span>\n    <span class=\"fm\">__init__</span><span class=\"o\">.</span>py\n    models<span class=\"o\">.</span>py\n    management<span class=\"o\">/</span>\n        commands<span class=\"o\">/</span>\n            _private<span class=\"o\">.</span>py\n            closepoll<span class=\"o\">.</span>py\n    tests<span class=\"o\">.</span>py\n    views<span class=\"o\">.</span>py\n</code></pre></div>\n<p>Σε αυτό το παράδειγμα, η εντολή <code class=\"docutils literal notranslate\">closepoll</code> θα είναι διαθέσιμη σε κάθε project που έχει εγκατεστημένη αυτή την εφαρμογή, ήτοι, η εφαρμογή <code class=\"docutils literal notranslate\">polls</code> βρίσκεται μέσα στη ρύθμιση <a class=\"reference internal\" href=\"/el/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a>.</p>\n<p>Το module <code class=\"docutils literal notranslate\">_private.py</code> δεν θα είναι διαθέσιμο ως μια εντολή διαχείρισης (management command), αφού το όνομα του ξεκινά με την κάτω παύλα.</p>\n<p>Το module <code class=\"docutils literal notranslate\">closepoll.py</code> έχει μόνο μια απαίτηση – πρέπει να ορίσει μια κλάση <code class=\"docutils literal notranslate\">Command</code> η οποία κάνει extend την κλάση <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\">BaseCommand</code></a> ή μια από τις <a class=\"reference internal\" href=\"#ref-basecommand-subclasses\"><span class=\"std std-ref\">subclasses</span></a> της.</p>\n<aside class=\"admonition-standalone-scripts admonition\" role=\"note\">\n<p class=\"admonition-title\">Αυτόνομα scripts</p>\n<p>Οι παραμετροποιήσιμες εντολές διαχείρισης είναι εξαιρετικά χρήσιμες για την εκτέλεση αυτόνομων scripts ή για scripts τα οποία εκτελούνται σε περιοδική βάση από το crontab του UNIX ή από τα scheduled tasks των Windows.</p>\n</aside>\n<p>Για να υλοποιήσετε την εντολή επεξεργαστείτε το αρχείο <code class=\"docutils literal notranslate\">polls/management/commands/closepoll.py</code> για να δείχνει κάπως έτσι:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.core.management.base</span> <span class=\"kn\">import</span> BaseCommand<span class=\"p\">,</span> CommandError\n<span class=\"kn\">from</span> <span class=\"nn\">polls.models</span> <span class=\"kn\">import</span> Question <span class=\"k\">as</span> Poll\n\n<span class=\"k\">class</span> <span class=\"nc\">Command</span><span class=\"p\">(</span>BaseCommand<span class=\"p\">):</span>\n    help <span class=\"o\">=</span> <span class=\"s1\">&#39;Closes the specified poll for voting&#39;</span>\n\n    <span class=\"k\">def</span> <span class=\"nf\">add_arguments</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> parser<span class=\"p\">):</span>\n        parser<span class=\"o\">.</span>add_argument<span class=\"p\">(</span><span class=\"s1\">&#39;poll_ids&#39;</span><span class=\"p\">,</span> nargs<span class=\"o\">=</span><span class=\"s1\">&#39;+&#39;</span><span class=\"p\">,</span> <span class=\"nb\">type</span><span class=\"o\">=</span><span class=\"nb\">int</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span> <span class=\"nf\">handle</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>options<span class=\"p\">):</span>\n        <span class=\"k\">for</span> poll_id <span class=\"ow\">in</span> options<span class=\"p\">[</span><span class=\"s1\">&#39;poll_ids&#39;</span><span class=\"p\">]:</span>\n            <span class=\"k\">try</span><span class=\"p\">:</span>\n                poll <span class=\"o\">=</span> Poll<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>pk<span class=\"o\">=</span>poll_id<span class=\"p\">)</span>\n            <span class=\"k\">except</span> Poll<span class=\"o\">.</span>DoesNotExist<span class=\"p\">:</span>\n                <span class=\"k\">raise</span> CommandError<span class=\"p\">(</span><span class=\"s1\">&#39;Poll &quot;</span><span class=\"si\">%s</span><span class=\"s1\">&quot; does not exist&#39;</span> <span class=\"o\">%</span> poll_id<span class=\"p\">)</span>\n\n            poll<span class=\"o\">.</span>opened <span class=\"o\">=</span> <span class=\"kc\">False</span>\n            poll<span class=\"o\">.</span>save<span class=\"p\">()</span>\n\n            <span class=\"bp\">self</span><span class=\"o\">.</span>stdout<span class=\"o\">.</span>write<span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span>style<span class=\"o\">.</span>SUCCESS<span class=\"p\">(</span><span class=\"s1\">&#39;Successfully closed poll &quot;</span><span class=\"si\">%s</span><span class=\"s1\">&quot;&#39;</span> <span class=\"o\">%</span> poll_id<span class=\"p\">))</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" id=\"management-commands-output\" role=\"note\">\n<p class=\"admonition-title\">Σημείωση</p>\n<p>Όταν χρησιμοποιείτε εντολές διαχείρισης και θέλετε να εμφανίσετε κάτι στην κονσόλα, θα πρέπει να το στέλνετε στο <code class=\"docutils literal notranslate\">self.stdout</code> και στο <code class=\"docutils literal notranslate\">self.stderr</code>, αντί να το εκτυπώνετε απ’ ευθείας στο <code class=\"docutils literal notranslate\">stdout</code> και <code class=\"docutils literal notranslate\">stderr</code>. Χρησιμοποιώντας αυτά, το τεστ της εντολής σας γίνεται παιχνιδάκι. Σημειώστε, επίσης, ότι δεν χρειάζεται να προσθέτετε το χαρακτήρα της νέας γραμμής (line feed) στο τέλος κάθε <code class=\"docutils literal notranslate\">self.stdout</code> ή <code class=\"docutils literal notranslate\">self.stderr</code> του μηνύματος σας. Θα προστεθεί αυτόματα από το Django εκτός και αν θέλετε διαφορετικά χρησιμοποιώντας την παράμετρο <code class=\"docutils literal notranslate\">ending</code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"bp\">self</span><span class=\"o\">.</span>stdout<span class=\"o\">.</span>write<span class=\"p\">(</span><span class=\"s2\">&quot;Unterminated line&quot;</span><span class=\"p\">,</span> ending<span class=\"o\">=</span><span class=\"s1\">&#39;&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n</aside>\n<p>The new custom command can be called using <code class=\"docutils literal notranslate\">python manage.py closepoll\n&lt;poll_ids&gt;</code>.</p>\n<p>The <code class=\"docutils literal notranslate\">handle()</code> method takes one or more <code class=\"docutils literal notranslate\">poll_ids</code> and sets <code class=\"docutils literal notranslate\">poll.opened</code>\nto <code class=\"docutils literal notranslate\">False</code> for each one. If the user referenced any nonexistent polls, a\n<a class=\"reference internal\" href=\"#django.core.management.CommandError\" title=\"django.core.management.CommandError\"><code class=\"xref py py-exc docutils literal notranslate\">CommandError</code></a> is raised. The <code class=\"docutils literal notranslate\">poll.opened</code> attribute does not exist in\nthe <a class=\"reference internal\" href=\"/el/3.1/intro/tutorial02/\"><span class=\"doc\">tutorial</span></a> and was added to\n<code class=\"docutils literal notranslate\">polls.models.Question</code> for this example.</p>\n<section id=\"accepting-optional-arguments\">\n<span id=\"custom-commands-options\"></span><h2>Προαιρετικά arguments<a class=\"heading-anchor\" href=\"#accepting-optional-arguments\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Αλλάζοντας εύκολα την εντολή <code class=\"docutils literal notranslate\">closepoll</code> ώστε να δέχεται επιπρόσθετες επιλογές όταν την καλείτε, θα μπορούσε να διαγράφει ένα poll αντί να το θέτει ως κλειστό (<code class=\"docutils literal notranslate\">poll.opened = False</code>). Αυτές οι επιλογές μπορούν να προστεθούν στη μέθοδο <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.add_arguments\" title=\"django.core.management.BaseCommand.add_arguments\"><code class=\"xref py py-meth docutils literal notranslate\">add_arguments()</code></a> ως εξής:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">Command</span><span class=\"p\">(</span>BaseCommand<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">add_arguments</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> parser<span class=\"p\">):</span>\n        <span class=\"c1\"># Positional arguments</span>\n        parser<span class=\"o\">.</span>add_argument<span class=\"p\">(</span><span class=\"s1\">&#39;poll_ids&#39;</span><span class=\"p\">,</span> nargs<span class=\"o\">=</span><span class=\"s1\">&#39;+&#39;</span><span class=\"p\">,</span> <span class=\"nb\">type</span><span class=\"o\">=</span><span class=\"nb\">int</span><span class=\"p\">)</span>\n\n        <span class=\"c1\"># Named (optional) arguments</span>\n        parser<span class=\"o\">.</span>add_argument<span class=\"p\">(</span>\n            <span class=\"s1\">&#39;--delete&#39;</span><span class=\"p\">,</span>\n            action<span class=\"o\">=</span><span class=\"s1\">&#39;store_true&#39;</span><span class=\"p\">,</span>\n            help<span class=\"o\">=</span><span class=\"s1\">&#39;Delete poll instead of closing it&#39;</span><span class=\"p\">,</span>\n        <span class=\"p\">)</span>\n\n    <span class=\"k\">def</span> <span class=\"nf\">handle</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>options<span class=\"p\">):</span>\n        <span class=\"c1\"># ...</span>\n        <span class=\"k\">if</span> options<span class=\"p\">[</span><span class=\"s1\">&#39;delete&#39;</span><span class=\"p\">]:</span>\n            poll<span class=\"o\">.</span>delete<span class=\"p\">()</span>\n        <span class=\"c1\"># ...</span>\n</code></pre></div>\n<p>Η επιλογή (η <code class=\"docutils literal notranslate\">delete</code> στο παράδειγμα μας) είναι διαθέσιμη μέσα στη μέθοδο handle μέσα από το options dictionary με το key delete. Δείτε περισσότερα στο εγχειρίδιο της Python σχετικά με τη χρήση της <a class=\"reference external\" href=\"https://docs.python.org/3/library/argparse.html#module-argparse\" title=\"(στη Python έκδοση 3.14)\"><code class=\"xref py py-mod docutils literal notranslate\">argparse</code></a> και τη μέθοδο <code class=\"docutils literal notranslate\">add_argument</code> .</p>\n<p>Πέρα από τη δυνατότητα της πρόσθεσης δικών σας επιλογών στην εντολή, όλες οι <a class=\"reference internal\" href=\"/el/3.1/ref/django-admin/\"><span class=\"doc\">εντολές διαχείρισης</span></a> μπορούν να δεχτούν μερικές δικές τους, προεγκατεστημένες, επιλογές όπως η <a class=\"reference internal\" href=\"/el/3.1/ref/django-admin/#cmdoption-verbosity\"><code class=\"xref std std-option docutils literal notranslate\">--verbosity</code></a> και η <a class=\"reference internal\" href=\"/el/3.1/ref/django-admin/#cmdoption-traceback\"><code class=\"xref std std-option docutils literal notranslate\">--traceback</code></a>.</p>\n</section>\n<section id=\"management-commands-and-locales\">\n<span id=\"id1\"></span><h2>Εντολές διαχείρισης και locales<a class=\"heading-anchor\" href=\"#management-commands-and-locales\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>By default, management commands are executed with the current active locale.</p>\n<p>If, for some reason, your custom management command must run without an active\nlocale (for example, to prevent translated content from being inserted into\nthe database), deactivate translations using the <code class=\"docutils literal notranslate\">&#64;no_translations</code>\ndecorator on your <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\">handle()</code></a> method:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.core.management.base</span> <span class=\"kn\">import</span> BaseCommand<span class=\"p\">,</span> no_translations\n\n<span class=\"k\">class</span> <span class=\"nc\">Command</span><span class=\"p\">(</span>BaseCommand<span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n\n    <span class=\"nd\">@no_translations</span>\n    <span class=\"k\">def</span> <span class=\"nf\">handle</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>options<span class=\"p\">):</span>\n        <span class=\"o\">...</span>\n</code></pre></div>\n<p>Since translation deactivation requires access to configured settings, the\ndecorator can’t be used for commands that work without configured settings.</p>\n</section>\n<section id=\"testing\">\n<h2>Τεστ<a class=\"heading-anchor\" href=\"#testing\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Πληροφορίες στο πως να τεστάρετε τις δικές σας εντολές διαχείρισης, μπορείτε να βρείτε στα <a class=\"reference internal\" href=\"/el/3.1/topics/testing/tools/#topics-testing-management-commands\"><span class=\"std std-ref\">εργαλεία για τεστ</span></a>.</p>\n</section>\n<section id=\"overriding-commands\">\n<h2>Overriding commands<a class=\"heading-anchor\" href=\"#overriding-commands\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django registers the built-in commands and then searches for commands in\n<a class=\"reference internal\" href=\"/el/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> in reverse. During the search, if a command name\nduplicates an already registered command, the newly discovered command\noverrides the first.</p>\n<p>In other words, to override a command, the new command must have the same name\nand its app must be before the overridden command’s app in\n<a class=\"reference internal\" href=\"/el/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a>.</p>\n<p>Management commands from third-party apps that have been unintentionally\noverridden can be made available under a new name by creating a new command in\none of your project’s apps (ordered before the third-party app in\n<a class=\"reference internal\" href=\"/el/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a>) which imports the <code class=\"docutils literal notranslate\">Command</code> of the overridden\ncommand.</p>\n</section>\n<section id=\"command-objects\">\n<h2>Objects εντολών<a class=\"heading-anchor\" href=\"#command-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">BaseCommand</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Η κύρια κλάση από την οποία πηγάζουν όλες οι εντολές διαχείρισης.</p>\n<p>Χρησιμοποιήστε αυτή την κλάση αν θέλετε να έχετε πρόσβαση σε όλους τους μηχανισμούς οι οποίοι μεταφράζουν τις επιλογές στη γραμμή εντολών (όπως την <code class=\"docutils literal notranslate\">--delete</code> που χρησιμοποιήσαμε νωρίτερα) και αποφασίζουν, ανάλογα την επιλογή, ποιον κώδικα να καλέσουν περαιτέρω. Αν δεν θέλετε να αλλάξετε κάποια από αυτές τις συμπεριφορές, ίσως σας φανεί χρήσιμη μια από τις <a class=\"reference internal\" href=\"#ref-basecommand-subclasses\"><span class=\"std std-ref\">subclasses</span></a> της <code class=\"docutils literal notranslate\">BaseCommand</code>.</p>\n<p>Πραγματοποιώντας subclassing στην κλάση <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\">BaseCommand</code></a> απαιτεί να υλοποιήσετε τη μέθοδο <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\">handle()</code></a>.</p>\n<section id=\"attributes\">\n<h3>Attributes<a class=\"heading-anchor\" href=\"#attributes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Όλα τα attributes μπορούν να οριστούν στη δική σας κλάση και να χρησιμοποιηθούν στις <a class=\"reference internal\" href=\"#ref-basecommand-subclasses\"><span class=\"std std-ref\">subclasses</span></a> της <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\">BaseCommand</code></a>.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.help\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">help</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.help\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Μια μικρή περιγραφή της εντολής η οποία θα εκτυπωθεί στην κονσόλα όταν ο χρήστης τρέξει την εντολή <code class=\"docutils literal notranslate\">python manage.py help &lt;command&gt;</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.missing_args_message\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">missing_args_message</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.missing_args_message\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Αν η εντολή σας ορίζει κάποια υποχρεωτικά positional arguments, μπορείτε να παραμετροποιήσετε το μήνυμα σφάλματος που επιστρέφεται, σε περίπτωση που αυτά τα arguments λείπουν. Προεπιλεγμένη τιμή είναι η έξοδος της <a class=\"reference external\" href=\"https://docs.python.org/3/library/argparse.html#module-argparse\" title=\"(στη Python έκδοση 3.14)\"><code class=\"xref py py-mod docutils literal notranslate\">argparse</code></a> («too few arguments»).</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.output_transaction\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">output_transaction</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.output_transaction\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Τύπου boolean που υποδεικνύει αν η εντολή θα εκτυπώσει (στην κονσόλα) εντολές SQL. Αν είναι <code class=\"docutils literal notranslate\">True</code>, τότε η έξοδος θα συμπεριληφθεί μέσα σε ένα <code class=\"docutils literal notranslate\">BEGIN;</code> και <code class=\"docutils literal notranslate\">COMMIT;</code>. Προεπιλεγμένη τιμή είναι το <code class=\"docutils literal notranslate\">False</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.requires_migrations_checks\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">requires_migrations_checks</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.requires_migrations_checks\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Τύπου boolean. Αν είναι <code class=\"docutils literal notranslate\">True</code>, η εντολή θα εκτυπώσει ένα warning αν το σετ των migrations στο δίσκο δεν ταιριάζει με τα migrations στη βάση δεδομένων. Υπόψιν ότι, ένα warning δεν εμποδίζει την εντολή από το να εκτελεστεί. Προεπιλεγμένη τιμή είναι το <code class=\"docutils literal notranslate\">False</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.requires_system_checks\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">requires_system_checks</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.requires_system_checks\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Τύπου boolean. Αν είναι <code class=\"docutils literal notranslate\">True</code>, τότε ολόκληρο το Django project σας θα ελεγχθεί για τυχόν σφάλματα πριν εκτελεστεί η εντολή. Προεπιλεγμένη τιμή είναι το <code class=\"docutils literal notranslate\">True</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.style\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">style</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.style\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ένα attribute που βοηθά στο να χρωματίσει την έξοδο (δηλαδή το κείμενο) όταν γράφετε στο <code class=\"docutils literal notranslate\">self.stdout</code> ή στο <code class=\"docutils literal notranslate\">self.stderr</code>. Για παράδειγμα:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"bp\">self</span><span class=\"o\">.</span>stdout<span class=\"o\">.</span>write<span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span>style<span class=\"o\">.</span>SUCCESS<span class=\"p\">(</span><span class=\"s1\">&#39;...&#39;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Δείτε στο <a class=\"reference internal\" href=\"/el/3.1/ref/django-admin/#syntax-coloring\"><span class=\"std std-ref\">χρωματίζοντας την έξοδο</span></a> για να μάθετε πως να τροποποιείτε την παλέτα των χρωμάτων και να δείτε τα διαθέσιμα στυλ (χρήση της έκδοσης των κεφαλαίων γραμμάτων των «ρόλων» όπως περιγράφονται σε αυτή την ενότητα).</p>\n<p>Αν δηλώσετε την επιλογή <a class=\"reference internal\" href=\"/el/3.1/ref/django-admin/#cmdoption-no-color\"><code class=\"xref std std-option docutils literal notranslate\">--no-color</code></a> όταν τρέχετε την εντολή σας, όλες οι κλήσεις της <code class=\"docutils literal notranslate\">self.style()</code> θα επιστρέψουν το αρχικό string χωρίς κάποιο χρώμα.</p>\n</dd></dl>\n\n</section>\n<section id=\"methods\">\n<h3>Μέθοδοι<a class=\"heading-anchor\" href=\"#methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Η κλάση <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\">BaseCommand</code></a> έχει μερικές μεθόδους οι οποίες μπορούν να παρακαμφθούν (overridden) αλλά μόνο η μέθοδος <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\">handle()</code></a> πρέπει να υλοποιηθεί υποχρεωτικά.</p>\n<aside class=\"admonition-implementing-a-constructor-in-a-subclass admonition\" role=\"note\">\n<p class=\"admonition-title\">Υλοποίηση ενός constructor μέσα σε μια subclass</p>\n<p>Αν υλοποιήσετε την <code class=\"docutils literal notranslate\">__init__</code> μέσα σε μια subclass της <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\">BaseCommand</code></a> θα πρέπει πρώτα να καλέσετε την <code class=\"docutils literal notranslate\">__init__</code> της κλάσης <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\">BaseCommand</code></a>, όπως φαίνεται παρακάτω:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">Command</span><span class=\"p\">(</span>BaseCommand<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">)</span>\n        <span class=\"c1\"># ...</span>\n</code></pre></div>\n</aside>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.create_parser\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">create_parser</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">prog_name</em>, <em class=\"sig-param\">subcommand</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.create_parser\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a <code class=\"docutils literal notranslate\">CommandParser</code> instance, which is an\n<a class=\"reference external\" href=\"https://docs.python.org/3/library/argparse.html#argparse.ArgumentParser\" title=\"(στη Python έκδοση 3.14)\"><code class=\"xref py py-class docutils literal notranslate\">ArgumentParser</code></a> subclass with a few customizations for\nDjango.</p>\n<p>You can customize the instance by overriding this method and calling\n<code class=\"docutils literal notranslate\">super()</code> with <code class=\"docutils literal notranslate\">kwargs</code> of <a class=\"reference external\" href=\"https://docs.python.org/3/library/argparse.html#argparse.ArgumentParser\" title=\"(στη Python έκδοση 3.14)\"><code class=\"xref py py-class docutils literal notranslate\">ArgumentParser</code></a> parameters.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.add_arguments\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">add_arguments</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">parser</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.add_arguments\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Σημείο εισόδου για να προσθέσετε arguments στο μεταφραστή (parser) για τον χειρισμό των arguments που εισάγονται στη γραμμή εντολών (όπως το argument <code class=\"docutils literal notranslate\">--delete</code> που αναφέραμε παραπάνω). Τυχόν δικές σας διαχειριστικές εντολές θα πρέπει να παρακάμπτουν αυτή τη μέθοδο για να προσθέσουν positional και optional arguments που θα δέχεται η εντολή. Η κλήση της <code class=\"docutils literal notranslate\">super()</code> δεν είναι απαραίτητη όταν κάνετε απ’ ευθείας subclass την κλάση <code class=\"docutils literal notranslate\">BaseCommand</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.get_version\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">get_version</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.get_version\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Επιστρέφει την έκδοση του Django, η οποία θα πρέπει να είναι η σωστή για όλες τις προεγκατεστημένες εντολές του Django. Τυχόν δικές σας διαχειριστικές εντολές μπορούν να παρακάμψουν αυτή τη μέθοδο για να επιστρέφουν τη δική τους έκδοση.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.execute\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">execute</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.execute\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Προσπαθεί να εκτελέσει την εντολή που γράψατε, πραγματοποιεί τυχόν τεστ που αφορά το σύστημα (ανάλογα την τιμή του attribute <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.requires_system_checks\" title=\"django.core.management.BaseCommand.requires_system_checks\"><code class=\"xref py py-attr docutils literal notranslate\">requires_system_checks</code></a>). Αν η εντολή κάνει raise το exception <a class=\"reference internal\" href=\"#django.core.management.CommandError\" title=\"django.core.management.CommandError\"><code class=\"xref py py-exc docutils literal notranslate\">CommandError</code></a>, τότε θα εμφανιστεί ανάλογο σφάλμα στο <code class=\"docutils literal notranslate\">stderr</code>.</p>\n</dd></dl>\n\n<aside class=\"admonition-calling-a-management-command-in-your-code admonition\" role=\"note\">\n<p class=\"admonition-title\">Καλώντας μια εντολή διαχείρισης μέσα από τον κώδικα σας</p>\n<p>Η μέθοδος <code class=\"docutils literal notranslate\">execute()</code> δεν θα πρέπει να καλείται απ” ευθείας από τον κώδικα σας για την εκτέλεση μιας εντολής. Αντί αυτής, χρησιμοποιήστε τη συνάρτηση <a class=\"reference internal\" href=\"/el/3.1/ref/django-admin/#django.core.management.call_command\" title=\"django.core.management.call_command\"><code class=\"xref py py-func docutils literal notranslate\">call_command()</code></a>.</p>\n</aside>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.handle\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">handle</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.handle\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Η πραγματική λογική της εντολής. Όλες οι subclasses πρέπει να υλοποιήσουν αυτή τη μέθοδο.</p>\n<p>It may return a string which will be printed to <code class=\"docutils literal notranslate\">stdout</code> (wrapped\nby <code class=\"docutils literal notranslate\">BEGIN;</code> and <code class=\"docutils literal notranslate\">COMMIT;</code> if <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.output_transaction\" title=\"django.core.management.BaseCommand.output_transaction\"><code class=\"xref py py-attr docutils literal notranslate\">output_transaction</code></a> is <code class=\"docutils literal notranslate\">True</code>).</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.check\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">check</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">app_configs<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tags<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">display_num_errors<span class=\"o\">=</span><span class=\"default_value\">False</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.check\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Χρησιμοποιεί το σύστημα ελέγχου του framework για να επιθεωρήσει ολόκληρο το Django project για τυχόν προβλήματα. Τα σοβαρά προβλήματα γίνονται raised ως <a class=\"reference internal\" href=\"#django.core.management.CommandError\" title=\"django.core.management.CommandError\"><code class=\"xref py py-exc docutils literal notranslate\">CommandError</code></a>. Τα warnings εκτυπώνονται στο <code class=\"docutils literal notranslate\">stderr</code>. Τυχόν δευτερεύουσες ειδοποιήσεις εκτυπώνονται στο <code class=\"docutils literal notranslate\">stdout</code>.</p>\n<p>Αν τα ορίσματα <code class=\"docutils literal notranslate\">app_configs</code> και <code class=\"docutils literal notranslate\">tags</code> είναι και τα δύο τύπου <code class=\"docutils literal notranslate\">None</code>, τότε θα γίνουν όλα τα συστήματα ελέγχου. Το όρισμα <code class=\"docutils literal notranslate\">tags</code> μπορεί να είναι μια λίστα από check tags, όπως <code class=\"docutils literal notranslate\">compatibility</code> ή <code class=\"docutils literal notranslate\">models</code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"basecommand-subclasses\">\n<span id=\"ref-basecommand-subclasses\"></span><h3><code class=\"docutils literal notranslate\">BaseCommand</code> subclasses<a class=\"heading-anchor\" href=\"#basecommand-subclasses\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.AppCommand\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">AppCommand</span><a class=\"heading-anchor\" href=\"#django.core.management.AppCommand\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Μια εντολή διαχείρισης η οποία δέχεται ως arguments (όπως το <code class=\"docutils literal notranslate\">&lt;poll_id&gt;</code> στην εντολή που γράψαμε παραπάνω <code class=\"docutils literal notranslate\">python manage.py closepoll &lt;poll_id&gt;</code>) ένα ή περισσότερα labels εφαρμογών και κάνει κάτι με καθένα από αυτά.</p>\n<p>Αντί της υλοποίησης της μεθόδου <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\">handle()</code></a>, οι subclasses πρέπει να υλοποιούν τη μέθοδο <a class=\"reference internal\" href=\"#django.core.management.AppCommand.handle_app_config\" title=\"django.core.management.AppCommand.handle_app_config\"><code class=\"xref py py-meth docutils literal notranslate\">handle_app_config()</code></a> η οποία θα καλείται μια φορά για κάθε εφαρμογή.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.AppCommand.handle_app_config\">\n<span class=\"sig-prename descclassname\">AppCommand.</span><span class=\"sig-name descname\">handle_app_config</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">app_config</em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.AppCommand.handle_app_config\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Εκτελεί τις ενέργειες της εντολής για το <code class=\"docutils literal notranslate\">app_config</code> το οποίο θα είναι ένα instance της κλάσης <a class=\"reference internal\" href=\"/el/3.1/ref/applications/#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> που αντιστοιχεί στο label της εφαρμογής που δόθηκε στη γραμμή εντολών.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.LabelCommand\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">LabelCommand</span><a class=\"heading-anchor\" href=\"#django.core.management.LabelCommand\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Μια εντολή διαχείρισης η οποία δέχεται ένα η περισσότερα arguments (labels) μέσω της γραμμής εντολών και κάνει κάτι με καθένα από αυτά.</p>\n<p>Αντί της υλοποίησης της μεθόδου <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\">handle()</code></a>, οι subclasses πρέπει να υλοποιούν τη μέθοδο <a class=\"reference internal\" href=\"#django.core.management.LabelCommand.handle_label\" title=\"django.core.management.LabelCommand.handle_label\"><code class=\"xref py py-meth docutils literal notranslate\">handle_label()</code></a>, η οποία θα καλείται μια φορά για κάθε label.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.LabelCommand.label\">\n<span class=\"sig-prename descclassname\">LabelCommand.</span><span class=\"sig-name descname\">label</span><a class=\"heading-anchor\" href=\"#django.core.management.LabelCommand.label\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ένα αλφαριθμητικό (string) που περιγράφει τις παραμέτρους που δόθηκαν στην εντολή. Το αλφαριθμητικό χρησιμοποιείται στα μηνύματα σφαλμάτων καθώς και στο κείμενο περιγραφής της εντολής. Προεπιλογή είναι το <code class=\"docutils literal notranslate\">'label'</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.LabelCommand.handle_label\">\n<span class=\"sig-prename descclassname\">LabelCommand.</span><span class=\"sig-name descname\">handle_label</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">label</em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.LabelCommand.handle_label\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Εκτελεί τις ενέργειες της εντολής για το <code class=\"docutils literal notranslate\">label</code>, το οποίο θα είναι ένα string όπως δόθηκε στη γραμμή εντολών.</p>\n</dd></dl>\n\n</section>\n<section id=\"command-exceptions\">\n<h3>Exceptions εντολής<a class=\"heading-anchor\" href=\"#command-exceptions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py exception\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.CommandError\">\n<em class=\"property\"><span class=\"k\">exception</span> </em><span class=\"sig-name descname\">CommandError</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">returncode<span class=\"o\">=</span><span class=\"default_value\">1</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.CommandError\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Μια κλάση Exception που υποδεικνύει ότι προέκυψε κάποιο πρόβλημα κατά τη διάρκεια εκτέλεσης της εντολής διαχείρισης.</p>\n<p>If this exception is raised during the execution of a management command from a\ncommand line console, it will be caught and turned into a nicely-printed error\nmessage to the appropriate output stream (i.e., stderr); as a result, raising\nthis exception (with a sensible description of the error) is the preferred way\nto indicate that something has gone wrong in the execution of a command. It\naccepts the optional <code class=\"docutils literal notranslate\">returncode</code> argument to customize the exit status for\nthe management command to exit with, using <a class=\"reference external\" href=\"https://docs.python.org/3/library/sys.html#sys.exit\" title=\"(στη Python έκδοση 3.14)\"><code class=\"xref py py-func docutils literal notranslate\">sys.exit()</code></a>.</p>\n<p>Αν η εντολή διαχείρισης καλείται μέσα από τον κώδικα σας μέσω της συνάρτησης <a class=\"reference internal\" href=\"/el/3.1/ref/django-admin/#django.core.management.call_command\" title=\"django.core.management.call_command\"><code class=\"xref py py-func docutils literal notranslate\">call_command()</code></a>, τότε είναι δικό σας θέμα να κάνετε catch, όποτε το κρίνετε απαραίτητο, αυτό το exception.</p>\n<aside class=\"version-note version-changed\" data-version=\"3.1\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 3.1</p><p>The <code class=\"docutils literal notranslate\">returncode</code> argument was added.</p>\n</aside>\n</section>\n</section>","rootId":"module-django.core.management","toc":[{"title":"Προαιρετικά arguments","anchor":"accepting-optional-arguments","children":[]},{"title":"Εντολές διαχείρισης και locales","anchor":"management-commands-and-locales","children":[]},{"title":"Τεστ","anchor":"testing","children":[]},{"title":"Overriding commands","anchor":"overriding-commands","children":[]},{"title":"Objects εντολών","anchor":"command-objects","children":[{"title":"Attributes","anchor":"attributes","children":[]},{"title":"Μέθοδοι","anchor":"methods","children":[]},{"title":"BaseCommand subclasses","anchor":"basecommand-subclasses","children":[]},{"title":"Exceptions εντολής","anchor":"command-exceptions","children":[]}]}],"breadcrumbs":[{"docname":"howto/index","title":"Οδηγοί «Πως-να»","url":"/el/3.1/howto/"}],"prev":{"docname":"howto/auth-remote-user","title":"Authentication using REMOTE_USER","url":"/el/3.1/howto/auth-remote-user/"},"next":{"docname":"howto/custom-model-fields","title":"Γράφοντας δικά σας πεδία μοντέλων","url":"/el/3.1/howto/custom-model-fields/"},"formats":{"html":"/el/3.1/howto/custom-management-commands/","markdown":"/el/3.1/howto/custom-management-commands.md","json":"/el/3.1/howto/custom-management-commands.json"},"source":"https://github.com/django/django/blob/stable/3.1.x/docs/howto/custom-management-commands.txt","official":"https://docs.djangoproject.com/el/3.1/howto/custom-management-commands/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}