質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

受付中

Djangoフォームで複数の初期値データを出力させたい。

hasemma
hasemma

総合スコア2

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0回答

0評価

0クリップ

644閲覧

投稿2021/10/16 10:08

編集2022/01/12 10:55

前提・実現したいこと

Djangoのポートフォリオサイト作成として、
サッカーゲームサイトの作成を目指して、プログラム作成を行っております。

こちらの質問を上げさせて頂いてから、
https://itc.tokyo/2021/05/14/2548/
こちらのHPを参考に軌道修正を掛けたのですが、
modelsのSkillクラスの「player_skill」に複数の値を入れている為、
エラーが発生しております。

解決法として、いい方法があれば、
ご教示頂けると幸いです。

宜しくお願い致します。

発生している問題・エラーメッセージ

「エラー内容」

File "/Users//MyPort/myvenv/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1283, in build_filter arg, value = filter_expr ValueError: too many values to unpack (expected 2)

該当のソースコード

detail_edit.html

{% extends "pes21/base.html" %} {% load widget_tweaks %} {% block content %} <h5 class="card-title text-center">スキル編集</h5> <table class="profile_table mb-4"> <tbody> {% for skill_item in skill_form %} <tr> <th class="header">スキル</th> <td class="data form_wrap form_wrap-2"> {% render_field skill_item.player_skill class='form-control' placeholder='スキル入力' %} </td> </tr> {% endfor %} </tbody>  </table> <div class="button mx-auto"> <button class="btn btn-1g btn-warning btn-block" type="submit"> 登録する </button> </div> </form> </div> </div> </form> </div> </div> {% endblock content %}

view.py

@login_required def playerupdateview(request, pk): player = get_object_or_404(Player, pk=pk) ability = Ability.objects.filter(player=pk)[0] skill_query_set = Skill.objects.filter(player=pk) skillobj_kwarg = skill_query_set.values() formation = Formation.objects.filter(player=pk)[0] playerobj_kwarg = { 'date_field':player.date_field,'initial':player.initial,'maximum':player.maximum,'level':player.level, 'player_name':player.player_name,'category':player.category,'position_category':player.position_category,'league_category':player.league_category, 'country':player.country,'club':player.club,'age':player.age,'height':player.height, 'dominant_foot':player.dominant_foot,'playstyle':player.playstyle,'player_image':player.player_image, } abilityobj_kwarg = { 'offense_sense':ability.offense_sense,'ball_control':ability.ball_control,'dribble':ability.dribble,'ball_keep':ability.ball_keep, 'grander_pass':ability.grander_pass,'fly_pass':ability.fly_pass,'determining_power':ability.determining_power,'heading':ability.heading, 'place_kick':ability.place_kick,'curve':ability.curve,'speed':ability.speed,'instantaneous_power':ability.instantaneous_power, 'kick_power':ability.kick_power,'jumping':ability.jumping,'physical_contact':ability.physical_contact, 'body_control':ability.body_control,'physical_fitness':ability.physical_fitness,'defense_sense':ability.defense_sense, 'take_the_ball':ability.take_the_ball,'aggressiveness':ability.aggressiveness,'gksense':ability.gksense, 'catching':ability.catching,'clearing':ability.clearing,'cobraging':ability.cobraging, 'deflectiveing':ability.deflectiveing,'reverse_foot_frequency':ability.reverse_foot_frequency,'reverse_foot_accuracy':ability.reverse_foot_accuracy, 'condition_stability':ability.condition_stability,'injury_resistance':ability.injury_resistance, } formationobj_kwarg = { 'formation_images':formation.formation_images } player_form = PlayerEditForm(request.POST or playerobj_kwarg) ability_form = AbilityEditForm(request.POST or abilityobj_kwarg) skill_form = SkillEditForm(request.POST or skillobj_kwarg) formation_form = FormationEditForm(request.POST or formationobj_kwarg) if player_form.is_valid() and ability_form.is_valid() and formation_form.is_valid() and skill_form.is_valid(): plyaer_data = player_form.save(commit=False) plyaer_data.save() ability_data = ability_form.save(commit=False) ability_data.save() formation_data = formation_form.save(commit=False) formation_data.save() skill_data = skill_form.save(commit=False) skill_data.player = player skill_data.save() return redirect('detail', id=player.id) return render(request, 'pes21/detail_edit.html', { 'player_form' : player_form, 'ability_form' : ability_form, 'skill_form' : skill_form, 'formation_form' : formation_form })

models.py

class Skill(models.Model): player = models.ForeignKey(Player, on_delete=models.CASCADE) player_skill = models.CharField('スキル入力', max_length=20, blank=True, null=True)

forms.py

class SkillEditForm(forms.Form): player_skill = forms.CharField(label='スキル入力', max_length=20)

試したこと

forms.py

class SkillCreateForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) for field in self.fields.values(): field.widget.attrs['class'] = 'form-control' class Meta: model = Skill fields = '__all__' SkillCreateFormSet = forms.modelformset_factory( Skill, form=SkillCreateForm, extra=10)

modelformset_factoryを使って、
viewsの修正を試みましたが、使用方法をわかっていないという点もあり、
上手くいかず断念しております。

参考:https://blog.narito.ninja/detail/30/

補足情報(FW/ツールのバージョンなど)

使用環境:mac book air m1 VScode

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。