У меня есть таблица, где я сохраняю данные (описание, x, y, результат и дату создания), и до сих пор все работает. Я подумал, что затем добавить столбец с автором для каждой сохраненной строки, например:author = models.ForeignKey ('auth.User', null = True, blank = False) problem
DES | X | Y | РЕЗУЛЬТАТ | ДАТА СОЗДАНИЯ | АВТОР |
hi | 3| 1 | 4 | 24/02/2015 | username |
Затем я добавил в models.py идентификации:
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 %}
Дело в том, что на странице администратора отображается выпадающее меню, из которого я (как администратор) может выбрать один из зарегистрированного пользователя, и поэтому я добавить их как в таблице моего приложения, так и в db.
Как я могу сделать этот процесс автоматическим? То есть после входа в систему вы помещаете данные в таблицу и один раз сохраняете данные, также имя пользователя сохраняется и не должно быть администратором, чтобы установить его.
Я искал аналогичный вопрос здесь, но я не нашел его, чтобы помочь мне решить мою проблему.
Я обновил свой вопрос с моим кодом ... Я думаю, что я сделал, как было предложено в Джанго документов, но я не уверен, что это то же самое, что вы думать о. – Trix
Спасибо, теперь это работает! Не могли бы вы объяснить, зачем вам делать эти дополнительные шаги? – Trix
У вас нет текущего зарегистрированного пользователя в форме, сначала мы создаем объект из формы, затем мы устанавливаем пользователя, finnaly мы передаем его базе данных. –