2017-05-15 10 views
0

最近私はdjangoでFitness Web Appを構築しています。私はWeb開発とdjangoの新しいです。そのために、メンバーが自分のトレーニングプランを作成できるページを作成しました。私はデータベースに計画を保存するのが好きですが、それは難しいところです。django複数の動的フォーム

ユーザーが「ワークアウトを追加」というページにアクセスすると、ワークアウトの名前を入力する必要があります。次に彼は自分のDBでエクササイズを検索することができます。これは完全にうまく動作します。彼はトレーニングプランに追加された運動のために彼のセット、担当者、および体重を設定する必要があります。ここで

image of my webpage

私のモデルです:

class Exercise(models.Model): 
    name = models.CharField(unique=True, max_length=150) 
    difficultLevel = models.IntegerField() 
    link = models.CharField(unique=True, max_length=1000, blank=True) 
    description = models.CharField(max_length=5000, blank=True) 
    muscleGroup1 = models.CharField(max_length=150, blank=True) 
    muscleGroup2 = models.CharField(max_length=150, blank=True) 
    muscleGroup3 = models.CharField(max_length=150, blank=True) 
    equipment1 = models.CharField(max_length=150, blank=True) 
    equipment2 = models.CharField(max_length=150, blank=True) 
    equipment3 = models.CharField(max_length=150, blank=True) 

class TrainingPlan(models.Model): 
    member = models.ForeignKey(Member) 
    name = models.CharField(max_length=150) 
    lastChange = models.DateField(auto_now=True) 

class MemberExercise(models.Model): 
    member = models.ForeignKey(Member) 
    exercise = models.ForeignKey(Exercise) 
    trainingPlan = models.ForeignKey(TrainingPlan) 
    sets = models.IntegerField(null=True) 
    reps = models.IntegerField(null=True) 
    weight = models.FloatField(null=True) # in kg 
    duration = models.IntegerField(null=True) # in sec 

検索の結果は、タイプExerciseだけあり、MemberExerciseはパーソナライズされた演習でなければなりません。私はこの1ページですべてのことをしたい。したがって、ユーザーが検索結果(Exercise)を自分のワークアウトに追加すると、セット、担当者などを取得するための一種の入力となり、新しいExerciseを追加できるようになります。彼が精緻化されると、データを日付ベースに保存する必要があるかどうかをストアボタンをクリックします。私はうれしいwhayでこれをする考えがありません。

データベースの構造についての私の考えが完全に無駄である場合でも、私はあらゆる助けに感謝します。あなたが探しているもの

答えて

0

さjQueryとダイナミックなフォームセットをジャンゴ(ユーザーがUI上のフィールドを追加できるようにすることができるようにするために)(ここではGitHubのリポジトリです:https://github.com/elo80ka/django-dynamic-formset

インストールに行くことができます.rstをダウンロードし、指示に従ってデモをダウンロードし、自分で試してみてください。 また、あなたが探している答えがあるように思われるので、この質問を確認したいかもしれません:https://stackoverflow.com/a/27286815/7625715

関連する問題