0

几天来,我一直在为此苦苦挣扎,深入研究 stackoverflow 兔子洞、文档和 youtube 教程。在这一点上,我只是在兜圈子。所以...

我有两个模型VariablesEntry. Entry 的每日输入是与给定变量相关联的记录。前任。我想将每日睡眠作为变量进行跟踪。然后,使用该变量,使用 Entry 模型将每日数据输入与该变量相关联。

我的模型在下面......(我怀疑我的架构也很乱,但它通常可以工作。这是我的第一次)

class Variables(models.Model):
    ENTRY_TYPE_CHOICES = [
    ('numeric', 'enter a daily number'),
    ('scale', 'rate daily on a scale of 1-10'),
    ('binary', "enter daily, 'yes' or 'no' "),
    ]
    id = models.IntegerField(primary_key=True)
    dep_var = models.CharField(max_length=50, default='')
    dv_reminder = models.CharField(max_length=50, choices=ENTRY_TYPE_CHOICES, default="numeric")
    # id current user
    evoler = models.ForeignKey(get_user_model(), default='', on_delete=models.CASCADE)

    def __str__(self):
        return self.dep_var

    def get_absolute_url(self):
        return reverse('entry_new')

class Entry(models.Model):
    id = models.AutoField(primary_key=True)
    evoler = models.ForeignKey(get_user_model(), default='', on_delete=models.CASCADE)  # id the active user
    dep_variables = models.CharField(max_length=50, default = '')
    data = models.FloatField(default=0.0)
    date = models.DateField(default=datetime.date.today)

我尝试编写一个函数来识别来自给定用户的最新变量并将其用作Entry.dep_variables模型中的默认值。这在本地环境中有效,但在我尝试迁移数据库时会导致问题。

意见...

def daily_entry(request):
    ''' page to make daily entries '''
    if request.method != 'POST':
        # No data submitted. GET submitted. Create a blank form
        form = DailyEntryForm()
    else:
        #POST data submitted. Process data
        form = DailyEntryForm(data=request.POST)
        if form.is_valid():
            data = form.save(commit=False)
            data.evoler = request.user
            data.save()
            return HttpResponseRedirect(reverse('entry_new'))

    context = {'form': form}
    return render(request, 'entry_new.html', context)

形式...

class VariablesForm(forms.ModelForm):
    class Meta:
        model = Variables
        fields = ['dep_var', 'dv_reminder' ]
        labels = {'dep_var':'Dependent variable to track', 'dv_reminder': 'Type of measure'}

class DailyEntryForm(forms.ModelForm):
    class Meta:
        model = Entry
        var = Variables.dep_var
        fields = ['dep_variables', 'data', 'date']
        labels = {'dep_variables': 'Dependent variable you are tracking',
                    'data': 'Daily entry', 'date': 'Date'}

和模板.html...

{% extends 'base.html' %}
{% load crispy_forms_tags %}


{% block content %}
  <br>
  <h1>New Entry</h1>
  <form class="" action="" method="post">
    {% csrf_token %}
    {{ form|crispy }}
    <input type="submit" name="" value="Save" />

  </form>

{% endblock content %}

任何和所有的帮助将不胜感激。

4

0 回答 0