Я делаю добавление файлов на сайт джанго. Все бы ничего, но модель объекта с FileField имеет еще и ForeignKey, для привязки файла к конкретному объекту. Я пытался следовать инструкциям в документации, но либо где-то свернул не туда, либо что-то не понимаю. Буду рад какому-нибудь примеру, может кто уже сталкивался с подобной проблемой.
models.py
# документ
class Doc(models.Model):
file = models.FileField('Файл', upload_to='docs')
idProj = models.ForeignKey(Project, verbose_name='Проект', on_delete=models.SET_NULL, null=True)
description = models.CharField('Примечание', max_length=2000, blank=True)
class Meta:
verbose_name = 'Документ'
verbose_name_plural = 'Документы'
def __str__(self):
return self.file.name
forms.py
class AddDocForm(forms.ModelForm):
class Meta:
model = Doc
fields = [
'file',
'description'
]
widgets = {
'file': forms.FileInput(attrs={
'class': 'form-file-input mt-2 mb-2'
})
}
def __init__(self, *args, **kwargs):
super(AddDocForm, self).__init__(*args, **kwargs)
self.fields['description'].widget = forms.Textarea(attrs={'class': 'form-control'})
views.py
def AddDocView(request, objId):
if request.method == 'POST':
form = AddDocForm(request.POST, request.FILES)
if form.is_valid():
form.save() #да, я знаю, что поле idProj здесь не обрабатывается, интерпретатор вообще до сюда не доходит
return redirect('/base/edit_project/' + str(objId))
if request.method == 'GET':
form = AddDocForm
return render(request, 'addDoc.html', {
'form': form,
'objId': objId
})