И у меня есть простая модель для пакета
from models import Package
from django import forms
class PackageForm(forms.ModelForm):
class Meta:
model= Package
fields= ['name', 'version', 'url', 'description', 'arch', 'dependancies', 'conflicts', 'file']
Как я могу попросить модель формы проверить в рамках валидации, например, расширение файла (класс FileField) .sh?
есть ли способ поместить это в модель? я могу управлять им только в виде?
Спасибо
Edit:
Кроме того, забыл спросить, у модели есть Foreignkey для аутентифицированной модели User ... которая будет содержать текущего пользователя .. как может Modelform управлять этим?
Еще раз спасибо
Спасибо за ответ! Я получаю это .. хотя я сталкиваюсь с проблемой
Пакет содержит внешний ключ для модели пользователя django.contrib.auth.models,
Когда форма обрабатывается, как я могу сказать модели формы передать текущий пользовательский объект в экземпляр модели?
я думал об этом ...
views.py
def add(request):
if request.method == 'POST':
the_model= PackageForm(request.user, request.POST, request.FILES)
if the_model.is_valid():
the_model.save()
я переписал init в модели:
from models import Package
from django import forms
class PackageForm(forms.ModelForm):
def __init__(self,user,*args,**kwargs):
super (PackageForm,self ).__init__(*args,**kwargs) # populates the post
self.fields['maintainer_name'].queryset = user # adds the user object passed by add in views.py
class Meta:
model= Package
fields= ['name', 'version', 'url', 'description', 'arch', 'dependancies', 'conflicts', 'file']
manteiner_name - это объект ForeignKey (пользователь) ...
это дает мне ключевую ошибку :( это не хорошо ...
Любые решения?
Спасибо!