Django: лучший способ реализовать & ldquo; статус & rdquo; поле в модулях

Если вы используете сервер Apache на своем локальном хосте (не делайте этого на производственном сервере), вы также можете публиковать результаты в скрипте, а не записывать его на консоль.

So вместо console.log вы можете написать:

JSONP('http://localhost/save.php', {fn: 'filename.txt', data: json});

Тогда save.php может это сделать

<?php

 $fn = $_REQUEST['fn'];
 $data = $_REQUEST['data'];

 file_put_contents("path/$fn", $data);
37
задан Boris 26 January 2010 в 19:39
поделиться

5 ответов

Может быть, этот вопрос поможет вам: Установите Django InteGerfield по выбору = ... Имя .
Я цитирую от принятого ответа (с корректировками;)):
Поместите это в ваш класс ( ( status_choices будет список, который передан на выбор , вариант поля :

PENDING = 0
DONE = 1
STATUS_CHOICES = (
    (PENDING, 'Pending'),
    (DONE, 'Done'),
)

, тогда вы можете сделать order.Status = order .Done .


Примечание , что вы не должны реализовывать собственный способ для получения (читаемого) значения, Django обеспечивает метод Get_Status_Display Отказ

39
ответ дан 27 November 2019 в 03:45
поделиться

Что я обычно делаю для этой ситуации:

Models.py

from static import ORDER_STATUS    
status = models.PositiveSmallIntegerField(choices=ORDER_STATUS)

Static.py

ORDER_STATUS = ((0, 'Started'), (1, 'Done'), (2, 'Error'))
ORDER_STATUS_DICT = dict((v, k) for k, v in ORDER_STATUS)

Теперь вы можете сделать:

from static import ORDER_STATUS_DICT
order.status = ORDER_STATUS_DICT['Error']
8
ответ дан 27 November 2019 в 03:45
поделиться

Вы можете попробовать посылку Enum: http://pypi.python.org/pypi/enum/

2
ответ дан 27 November 2019 в 03:45
поделиться

Вам не нужен ваш метод STATUS_STR - Django автоматически предоставляет get_status_display () , который имеет ровно то же самое.

Чтобы отменить, вы можете использовать это:

def set_order_status(self, val):
    status_dict = dict(ORDER_STATUS)
    self.status = status_dict[val][0]

Теперь вы можете сделать:

order.set_order_status('Done')
2
ответ дан 27 November 2019 в 03:45
поделиться

Может быть, придерживаться метода на модели, как:

def status_code(self, text):
    return [n for (n, t) in self.ORDER_STATUS if t == text][0]

, тогда вы сделаете:

order.status = order.status_code('Error')
0
ответ дан 27 November 2019 в 03:45
поделиться
Другие вопросы по тегам:

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