Нуждаюсь в помощи с Django ModelForm: Как отфильтровать ForeignKey/ManyToManyField?

Этот вопрос заинтриговал меня, поэтому я провел небольшое исследование. То, что вы ищете, это « dll инъекция ». Вы пишете функцию для замены некоторой библиотечной функции, помещаете ее в .so и говорите ld предварительно загрузить вашу dll. Я только что попробовал, и это работало отлично! Я понимаю, что на самом деле это не отвечает на ваш вопрос относительно gdb, но я думаю, что он предлагает эффективный обходной путь.

Для решения только для GDB, см. Мое другое решение.


// -*- compile-command: "gcc -Wall -ggdb -o test test.c"; -*-
// test.c

#include "stdio.h"
#include "stdlib.h"

int main(int argc, char** argv)
{
    //should print a fairly random number...
    printf("Super random number: %d\n", rand());

    return 0;
}

/ -*- compile-command: "gcc -Wall -fPIC -shared my_rand.c -o my_rand.so"; -*-
//my_rand.c

int rand(void)
{
    return 42;
}

скомпилируйте оба файла, затем выполните: LD_PRELOAD="./my_rand.so" ./test

Super random number: 42

5
задан Community 23 May 2017 в 10:29
поделиться

2 ответа

Я бы отредактировал ответ Дэниела Роземанса и проголосовал бы за него, но, поскольку я не могу его отредактировать, я опубликую здесь правильный ответ:

class IncomingForm(ModelForm):
    class Meta:
        model = Incoming

    def __init__(self, *args, **kwargs):
        super(IncomingForm, self).__init__(*args, **kwargs)
        if self.instance:
            self.fields['cat_id'].queryset = Category.objects.filter(
                    parents__exact=self.instance.id)

Разница в self.fields ['cat_id '] (правильно) vs self.fields [' parent '] (неверно, мы оба сделали одну и ту же ошибку)

6
ответ дан 18 December 2019 в 12:01
поделиться

Как вы говорите, вам нужен класс modelform с пользовательским __ init __ :

class IncomingForm(ModelForm):
    class Meta:
        model = Incoming

    def __init__(self, *args, **kwargs):
        super(IncomingForm, self).__init__(*args, **kwargs)
        if self.instance:
            self.fields['parents'].queryset = Category.objects.filter(
                                              parents__exact=instance.id)
9
ответ дан 18 December 2019 в 12:01
поделиться
Другие вопросы по тегам:

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