2014-02-14 2 views
0

Давайте предположим, что у нас есть 2 модели:Джанго форма - фильтр ForeignKey в модели

class Entry(models.Model): 
    number = models.IntegerField(blank=True, null=True, verbose_name="#") 
    product = models.ForeignKey(Application, blank=True, null=True, verbose_name='Application') 

class Application(models.Model): 
    name = models.CharField(max_number=100) 
    defaultCalendar = models.ForeignKey(Calendar) 
class Calendar(models.Model): 
    name = models.CharField(max_number=100) 

и форма:

class EntryForm(ModelForm): 

class Meta: 
    model = Entry 
    fields = {'product ', 'number'} 

1) В документации мы можем прочитать, что с помощью fields мы можем изменить однако в этом примере это не работает :(

2) Есть ли способ фильтровать продукт в моей форме? В воззрениях с моделью я могу сделать, что этот путь

def somefunction(request, val1, val2): 
    products = Application.objects.filter(defaultCalendar=request.user.get_profile().defaultCalendar) 

get_profile это функция, которая возвращает профиль пользователя.

В любом случае, чтобы сделать это в форме? Аргумент фильтра должен быть связан с пользователем, который выполнил эту функцию.

Заранее спасибо

ответ

3

1) он не работает, потому что "поле" должно быть список:

fields = ['product ', 'number', ] 

2)

Вы можете использовать:

form.fields["product"].queryset = your_queryset 
+0

Спасибо, он мне очень поможет. – Silwest

Смежные вопросы