3

そして、私はパッケージの簡単なモデルフォームを持っています

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であるかどうかを検証内で確認するように、modelformに依頼するにはどうすればよいですか?

これをモデル形式にする方法はありますか?ビューでのみ管理できますか?

ありがとう

編集:また、モデルには認証ユーザーモデルへの外部キーがあります...現在のユーザーが含まれます..modelformはそれをどのように管理できますか?

再度、感謝します


答えてくれてありがとう!私はこれを手に入れています..問題が発生しましたが

パッケージにはdjango.contrib.auth.modelsユーザーモデルへの外部キーが含まれています。フォームが処理されるときに、現在のユーザーオブジェクトをモデルインスタンスに渡すようにmodelformに指示するにはどうすればよいですか?私はこれを考えました...

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()

modelformの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(User)オブジェクトです...それは私にキーエラーを与えます:(それは良くありません...何か解決策はありますか?

ありがとう!

4

1 に答える 1

6

追加の検証を行うには、Djangoのドキュメントを読む必要があります。

clean_file()メソッドを定義するだけです。

于 2010-02-05T22:00:05.323 に答える