ドロップダウンから出発地と目的地を選択するようにユーザーに求めるフォームがあります。しかし、ラベルは私が望んでいるものではありません。これを変更したいと思います。
Models.py:
class locations(models.Model):
id = models.AutoField(primary_key=True)
location = models.TextField()
class drones(models.Model):
origin = models.ForeignKey('locations', models.PROTECT, null=True, related_name='destination_id')
destination = models.ForeignKey('locations', models.PROTECT, null=True, related_name='origin_id')
Views.py:
def book(request):
form = BookForm(request.POST or None)
context = {
"form": form
}
return render(request, '../../drone_system/templates/drone_system/book.html', context)
Book.html:
{% extends "drone_system/base.html" %}
{% block content %}
<nav class="mx-auto card w-25" style=text-align:center;border:none;padding-top:12%>
<form action="book" method="POST">{% csrf_token %}
<h3 style="padding-bottom: 10px">Book</h3>
<div class="form-group">
<div>
<label for="Origin">Origin</label>
{{ form.origin }}
<br>
<label for="Destination">Destination</label>
{{ form.destination }}
</div>
</div>
<button type="submit" class="btn btn-primary btn-lg btn-block">Book</button>
</form>
</nav>
{% endblock %}
Forms.py:
from django import forms
from django.forms import ModelForm
from .models import drones
class BookForm(ModelForm):
class Meta:
model = drones
fields = ['origin', 'destination']
widgets = {
'origin': forms.Select(
attrs={
'class': 'my-1 mr-2',
},
choices=((1, 'London'), (2, 'Plymouth'), (3, 'Swansea'), (4, 'Birmingham'), (5, 'Manchester'), (6, 'Edinburgh'), (7, 'Belfast'))
),
'destination': forms.Select(
attrs={
'class': 'my-1 mr-2',
},
choices=((1, 'London'), (2, 'Plymouth'), (3, 'Swansea'), (4, 'Birmingham'), (5, 'Manchester'), (6, 'Edinburgh'), (7, 'Belfast'))
)
}
ご覧のとおり、これは次のようになります。 ロケーションオブジェクト(1)、ロケーションオブジェクト(2)..。
代わりに、ロンドン、プリマスなどの都市の名前を表示したいと思います。これらの名前もロケーションモデル(locations.location)の一部です。また、forms.pyでchoicesを使用してみましたが、何も変更されていません。これを都市名に変更するにはどうすればよいですか?
回答 2 件
これがあなたを助けることができるドキュメントへのリンクです: https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#overriding-the-default-fields
それらは、選択肢のラベルを含むModelFormフィールドをオーバーライドする例を示しています。
関連記事
- ドロップダウンでオプションテキストを検索し、選択を設定してテキストを変更します
- Djangoフォームのドロップダウンフィールドには、他のユーザーが所有するデータが表示されます
- AngularMaterialドロップダウン幅の変更
- Django:管理インターフェース:ユーザーパスワードを変更する方法
- Djangoモデルが値として返すものを変更するにはどうすればよいですか?
- 入力がアクティブなときにラベルのテキストの色を変更する
- ギグロット、グラフの凡例名とラベルを変更できないようです
- HTMLのドロップダウンメニューの上にラベルの位置を指定します
- DJango:ドロップダウンの選択に応じてテキストを更新しますか?
関連した質問
- Django Adminに、カスタムHTMLを使用せずに、保存時にモデルフィールドにクエリセットを提供するカスタムオートコンプリートフィールドを追加する方法はありますか?
- DjangoAdminで多対多モデルのすべてのフィールドを表示するにはどうすればよいですか?
- これらの反復的なdjangoクラスベースのビューとURLパターンを作成するためのより乾燥した方法はありますか?
- sqliteに画像を保存する:Django
- アプリの29の未適用の移行を解決するにはどうすればよいですか:admin、api、auth、authtoken、contenttypes、sessions、social_django
- 外部キーを介して接続された別のモデルのフィールドを使用してDjangoフィルターデータ
- Djangoモデルフォームベースのシステムをサインアップ用の生のHTMLベースのフォームシステムに変換します
- Djangoで1対1のテーブルフィールド値にアクセスする
- DetailViewを介してURLパスを作成しようとしていますが、HTMLページで重複する値を取得しています
追加する必要があります
__str__
モデル内にあるため、文字列表現があります