Cześć wszystkim,
Pisze aplikacje ToDo lista z mozliwoscia logowania się. Chciałbym aby każdy user miał swoją indywidualną listę po zalogowaniu się.
Problem: Gdy dodaje taksa z panelu admina to wszystko jest widoczne dla poszczególnych userów (moge tez usuwać i edytować taski). Nie moge jednak dodać taska za pomocą forma w aplikacji. Przestało działać jak dodałem do modelu Task pole: models.ForeignKey(User, on_delete=models.CASCADE). Robiąc testy co nie działa doszedłem do wniosku, że if forms.isvalid() - nie jest True i forma sie nie zapisuje ale nie wiem dlaczego.
Czy powinienem dodać jakieś query o ForeignKey do formy ?
Model:
from django.contrib.auth.models import User
class Task(models.Model):
owner = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=500)
created_time = models.DateTimeField(auto_now_add=True)
status = models.BooleanField(default=False)
def __str__(self):
return self.title
Forma:
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
class TaskForm(forms.ModelForm):
class Meta:
model = Task
fields = '__all__'
class CreateAccount(UserCreationForm):
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
Widok:
@login_required(login_url='login')
def tasks_list(request):
#tasks = Task.objects.all()
tasks = Task.objects.filter(owner=request.user)
form = TaskForm()
if request.method =='POST':
form = TaskForm(request.POST)
if form.is_valid():
form.save()
return redirect('/')
context = {
'tasks': tasks,
'form': form,
}
return render(request, 'todo/base.html', context)