2013-03-05 3 views
0

У меня есть Джанго модель состоит из двух классов annualReport и annualReportAttachmentДжанго модель: проверить соотношение перед сохранением объекта

Соотношение между этими двумя моделями является oneToMany. В форме админ мне нужно проверки, что пользователь загрузил хотя бы один файл, поэтому я использую следующий чистый метод в annualReport класса

def clean(self): 
    attachments = annualReportAttachment.objects.filter(annualReport=self) 
    if len(attachments) == 0: 
     raise ValidationError("You should upload at least one file") 

Проблема в том, что вложенные файлы еще не сохранен, так переменной attachments пусто и форма всегда поднимает эту ошибку.

Как я могу проверить, что пользователь загрузил хотя бы один файл?

+0

если len (вложения)> 0: – catherine

+0

Является ли yearReportAttachment представленным как встроенная модель в вашем классе администратора для годового отчета? – Brandon

+0

@Brandon Да, это встроенная модель –

ответ

0

Вам нужно убедиться, что по крайней мере одна форма в вашей встроенной модели будет сохранена. Для этого я бы рекомендовал использовать класс RequireOneFormSet от https://code.google.com/p/wadofstuff/wiki/WadOfStuffDjangoForms

+0

есть ли другое решение обходного пути вместо 'RequireOneFormSet'? –

+0

Вы всегда можете написать свой собственный, но в итоге вы будете писать ту же логику, что и в классе RequireOneFormSet. Я использовал этот класс в многочисленных проектах, где требуется хотя бы одна встроенная модель, и она отлично работает. – Brandon

+0

Как насчет класса RequireOneFormSet не подходит для ваших нужд? – Brandon

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