author = models.ForeignKey('auth.User', null=True, blank=False) 麻烦

author = models.ForeignKey('auth.User', null=True, blank=False) trouble

我有一个 table 用于保存数据(描述、x、y、结果和创建日期),直到现在一切正常。 然后我想为每个保存的行添加一个作者列,例如:

DES| × |是 |结果 |创建日期|作者 |

hi | 3| 1 |   4    |  24/02/2015     | username |

然后我在 models.py 中添加了 auth:

from django.db import models
from django.utils import timezone
from simpleapp.oper import add_divide
from django.conf import settings


class ElementiTab(models.Model):
    author = models.ForeignKey('auth.User', null=True, blank=False)
    des = models.CharField(max_length=30)
    x = models.FloatField()
    y = models.FloatField()
    res = models.FloatField(default=0)
    created_date = models.DateTimeField(default=timezone.now)

    def save(self, *args, **kwargs):
        self.res = add_divide(self.x, self.y)
        super(ElementiTab, self).save(*args, **kwargs)


    def __str__(self):
        return self.des

更新:

forms.py

from django import forms
from .models import ElementiTab

class  ElementiTabForm(forms.ModelForm):

    class Meta:
        model =  ElementiTab
        fields = ('des', 'x', 'y') 

views.py

@login_required
def tabval(request):
    # if this is a POST request we need to process the form data
    valori = ElementiTab.objects.filter().order_by('-created_date')
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = ElementiTabForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            # process the data in form.cleaned_data as required
            form.save()

    # if a GET (or any other method) we'll create a blank form
    else:
        form = ElementiTabForm()

    return render(request, 'simpleapp/simpleapp.html', {'form': form, 'valori': valori})

@user_passes_test(lambda u: u.is_superuser)
def delete(request, id):
    valori_to_delete = get_object_or_404(ElementiTab, pk=id).delete()
    return redirect(tabval)

simpleapp.html

{% extends 'registration/base_reg.html' %}
    {% block title %}SimpleApp-tabval{% endblock %}
    {%block content%}       



             <h4>TABELLA CON DATI</h4>






<form action="/simpleapp/" method="post">
    {% csrf_token %}
    {{ form.as_table }}
    <input type="submit" value="LIST" />
  </form>
<form action="/simpleapp/" method="DELETE">
        {% csrf_token %}
        <input type="submit" name="canc" value="RESET" />
 </form>

  <br />
  <br />        

                    <div class="table-responsive">
                        <table class="table table-bordered">
                            <tr class="info">
                            <td width="15%" align="center"> NOME</td>
                            <td width="15%" align="center"> X </td>
                            <td width="15%" align="center"> Y </td>
                            <td width="15%" align="center"> RISULTATO </td>
                            <td width="15%" align="center"> DATA CREAZIONE </td>
                            <td width="15%" align="center"> AUTORE </td>
                            {% for elementi in valori %}
                                <div class="elementi">
                                    <tr>

                                    <td>{{elementi.des}}</td> 
                                    <td>{{elementi.x}}</td>
                                    <td>{{elementi.y}}</td>
                                    <td>{{elementi.res}}</td>
                                    <td>{{elementi.created_date}}</td>
                                    <td>{{elementi.author}}</td>
                                    <td width="1%">
                                    {% if user.is_superuser %}
                                        <a href="/delete/{{elementi.id}}" class="btn btn-danger" role="button">Delete</a>
                                    {% else %}
                                    <a href="" class="btn btn-danger disabled" role="button"><span style='font-size: small'>Only Admin</span></a>
                                    {% endif %}
                                    </td>
                                </div>

                            {% endfor %}
                        </table>
                    </div>



{% endblock content %}

事实上,管理页面显示了一个下拉菜单,我(作为管理员)可以从中选择其中一个注册用户,所以我将他们都添加到table 我的应用程序和数据库。

如何使这个过程自动进行? IE。登录后,将数据放在table中,保存数据后,用户名也被保存,不应由管理员设置。

我在这里搜索了一个类似的问题,但没有找到可以帮助我解决问题的问题。

我更新了我的回答,我误解了你的问题。

改变你的观点

    if form.is_valid():
        # Creating the object without commiting to database
        obj = form.save(commit=False)
        # Setting the user from request
        obj.author = request.user
        # Commiting to the database
        obj.save()