как изменить выбор на администраторских страницах - django

Похоже, вы пропускаете только cursor.

Ссылочный код можно найти здесь: Курсоры MySql

CREATE PROCEDURE deleteOverlappingBottles()
BEGIN
DECLARE done INT DEFAULT FALSE;
-- Variables for FETCH (change data types to your needs)
DECLARE vBottleBarcode CHAR(100);
DECLARE vt_stamp TIMESTAMP;
DECLARE vParentPrepackId INT;
-- cursor to iterate through the table
DECLARE cur1 CURSOR FOR SELECT BottleBarcode, t_stamp, ParentPrepackId FROM allBottles;
-- apparently MySql needs this to handle the end of the table
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

OPEN cur1;

read_loop: LOOP
    -- get the three column values for the current row
    FETCH cur1 INTO vBottleBarcode, vt_stamp, vParentPrepackId;
    IF done THEN
      LEAVE read_loop;
    END IF;
    -- use the variables from FETCH to identify the row in historicdataToDelete
    DELETE FROM historicdata2Delete as t
    WHERE t.unitADcode = vBottleBarcode AND t.bottle_timestamp = vt_stamp
    AND t.prepackId = vParentPrepackId
    LIMIT 1; -- delete only 1 row
  END LOOP;

  CLOSE cur1;
END LOOP;
End;

Отказ от ответственности: Я не знаком с MySql. Синтаксис может быть немного неправильным, пожалуйста, адаптируйтесь к вашим потребностям.

9
задан shanyu 14 May 2009 в 16:42
поделиться

3 ответа

Вам необходимо использовать пользовательский ModelForm в классе ModelAdmin для этой модели. В пользовательском методе __init__ ModelForm вы можете динамически устанавливать варианты для этого поля:

class FooForm(forms.ModelForm):
    class Meta:
        model = Foo

    def __init__(self, *args, **kwargs):
        super(FooForm, self).__init__(*args, **kwargs)
        current_state = self.instance.state
        ...construct available_choices based on current state...
        self.fields['state'].choices = available_choices

Вы бы использовали его следующим образом:

class FooAdmin(admin.ModelAdmin):
    form = FooForm
9
ответ дан 4 December 2019 в 10:05
поделиться

Это похоже на работу для некоторого javascript. Вы хотите, чтобы список элементов в поле выбора изменялся в зависимости от значения чего-либо еще, например, флажка или переключателя. Единственный способ сделать это динамически - без необходимости заставлять пользователя сохранять форму и перезагружать страницу - это использовать javascript.

Вы можете загрузить собственный javascript на странице администратора модели, используя класс ModelAdmin Media, задокументированный ] здесь .

0
ответ дан 4 December 2019 в 10:05
поделиться

I see what you're trying to do, but why not just display all of them and if the person picks the (already set) current state, just don't change anything?

you could also just build a view with a form to provide this functionality

-1
ответ дан 4 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

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