Latest posts on Choise и связь с другим классом. topichttps://python.su/forum/topic/39624/2020-11-14T00:00:29+02:00Веб-технологии :: Django :: Choise и связь с другим классом.
2020-11-14T00:00:29+02:00DOOMer212998<blockquote>class Card_Status(models.Model):<br/>CARD_STATUS_CHOICES = (<br/>(1, “Заведен в базу”),<br/>(2, “Свободен”),<br/>(3, “Активирован”),<br/>(4, .. и т.д.)<br/>)<br/>status = models.CharField(max_length=19, null=True, choices=CARD_STATUS_CHOICES, default=1)</blockquote>ИМХО, эта сущность лишняя в БД, если у вас набор статусов заранее предопределен и не предополагает изменений в дальнейшем.<br/><br/>Список статусов можно прям в тот же класс вбить, в котором хотите их использовать:<br/><br/><div class="code"><pre> <span class="k">class</span> <span class="nc">Card_Main</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
<span class="n">CARD_STATUS_CHOICES</span> <span class="o">=</span> <span class="p">(</span>
<span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="err">“Заведен</span> <span class="err">в</span> <span class="err">базу”</span><span class="p">),</span>
<span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="err">“Свободен”</span><span class="p">),</span>
<span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="err">“Активирован”</span><span class="p">),</span>
<span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="o">..</span><span class="err">и</span> <span class="err">т</span><span class="o">.</span><span class="err">д</span><span class="o">.</span><span class="p">)</span>
<span class="p">)</span>
<span class="o">...</span>
<span class="n">card_main_status</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveIntegerField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s2">"Status"</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">CARD_STATUS_CHOICES</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</pre></div><br/>Если Django>=3.0, то можно использовать субклассы от models.TextChoices и models.IntegerChoices. <br/><a href="https://docs.djangoproject.com/en/3.1/ref/models/fields/#enumeration-types">https://docs.djangoproject.com/en/3.1/ref/models/fields/#enumeration-types</a>
Веб-технологии :: Django :: Choise и связь с другим классом.
2020-11-11T23:14:13+02:00Denla212970Всем добрый день, прошу помощи.<br/><br/>Делаю небольшой проект, параллельно изучая Django. <br/><br/>Имеем:<br/>В models несколько class, среди которых:<br/><br/>class Card_Status(models.Model):<br/> CARD_STATUS_CHOICES = (<br/> (1, “Заведен в базу”),<br/> (2, “Свободен”),<br/> (3, “Активирован”),<br/> (4, .. и т.д.)<br/> )<br/> status = models.CharField(max_length=19, null=True, choices=CARD_STATUS_CHOICES, default=1)<br/><br/>class Card_Main(models.Model):<br/> card_main_number = models.CharField(max_length=50, unique=True, verbose_name='Номер')<br/> card_main_date_add = models.DateTimeField(auto_now_add=True, verbose_name='Дата добавления')<br/> …<br/> card_main_status = models.ForeignKey(Card_Status, on_delete=models.CASCADE, verbose_name='Статус')<br/><br/>Идея заключается в том, что при создании объекта для класса Card_Main, статус по умолчанию выбирался бы на 1 ( “Заведен в базу”)<br/>И уже дальше, когда происходят действия с объектами, изменялся их статус в рамках перечня CARD_STATUS_CHOICES.<br/><br/>И вот я не могу понять, как их связать? <br/>Будьте добры, подскажите в какую сторону копать?<br/>Спасибо.