0
私はデータベースにウェブサイトを追加するための簡単なフォームを持っています。これは私のサイトのモデルである:Django - 動的変更フォームフィールド
class Site(models.Model):
category = models.ForeignKey('Category')
category1 = models.ForeignKey('Category', related_name='+',)
subcategory = ChainedForeignKey(
'Subcategory',
chained_field='category',
chained_model_field='category',
show_all=False,
auto_choose=True)
name = models.CharField(max_length=70)
description = models.TextField()
# importuje zmienione TextFields widgets.py
keywords = MyTextField()
date = models.DateTimeField(default=datetime.now, editable=False)
url = models.URLField()
is_active = models.BooleanField(default=False)
group = models.CharField(max_length=2, choices=(('Basic',
'Basic'), ('Premium', 'Premium')))
subcategory1 = ChainedForeignKey(
'Subcategory',
chained_field='category1',
chained_model_field='category1',
related_name='subcategory1',
show_all=False,
auto_choose=True)
def get_absolute_url(self):
return "%s/%i" % (self.subcategory.slug, self.id)
class Meta:
verbose_name_plural = "Sites"
def __str__(self):
return self.name
Forms.py
class SiteAddFormFull(forms.ModelForm):
url = forms.URLField(widget=forms.TextInput(attrs={'readonly': 'readonly'}))
class Meta:
model = Site
fields = ('url', 'name', 'description', 'keywords', 'group', 'category1','subcategory1')
私は、グループフィールド( 'プレミアムで値を選択し、ユーザーの後、フィールドのカテゴリ1'、「Subcategory1」を追加することによって、自分のフォームを変更したいです')。フォームは自分自身を再読み込みし、それらのフィールドを表示する必要があります。 「プレミアム」フィールド「カテゴリ1」を選択する前に、「サブカテゴリ1」は見えないはずです。それをどうすれば実現できますか?私forms.pyで
私がコメントを追加しました:私の.jsで
widgets = {'category1': forms.HiddenInput(), 'subcategory1':
forms.HiddenInput()}
が、私はそれらのフィールドを表示しようとするが、それは動作しませんファイル:私のページsoureで
$(":hidden").show();
// $("#id_category1".show() and other posibilities
私が持っています
なぜ機能しないのですか?
負荷のすべてのデータは、毎回フィールドがデータをロードするためにサーバーにあなたが望むものを達成するために、クライアント側でJavaScriptを使用したり、いくつかのAJAX呼び出しを行うと、フォームの初期化機能で –
を変更すると、jsの助けを借りてプレミアムを選択すると隠された属性が削除されます – rsb