Я пытаюсь создать несколько форм, которые позволят пользователям добавлять некоторые объекты, удалять их или редактировать, но я придерживался такой вещи, как автор модели.Допустим, у нас есть модель Shot, у которой есть поле
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
Поскольку я создал пользовательскую модель пользователя, чтобы расширить пользователя на некоторые поля, которые я хочу, а затем мы создаем modelForm, создаем представления и т. Д. И, наконец, получили форму,Когда мы попытаемся отправить эту форму, он не будет добавлять этот объект, отправленный в форму, в базу данных, потому что форма не имеет автора заполненного поля, что означает это поле == Null, и поэтому оно не будет добавлять это в базу данных.Поэтому мой вопрос заключается в том, как сделать его динамичным, например, когда пользователь с ником «thebestuser» попытается добавить эту модель. Он будет работать и пометить автора как «thebestuser»?Конечно, я мог бы добавить к автору поля формы, но, на мой взгляд, это худший способ, и каждый пользователь мог бы добавить объект, например, как другой пользователь, скажем, пользователь с ником "anothernick" мог добавить форму как пользователь с "thebestuser ", который, по моему мнению, неприемлем.
models.py
from django.db import models
from django.contrib.auth.models import User
from streamers.models import Streamer
from django.conf import settings
from django.utils import timezone
class Shot(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=70)
url = models.CharField(max_length=100)
streamer = models.ForeignKey(Streamer, on_delete=models.CASCADE)
published_date = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.title
forms.py
from django import forms
from .models import Shot
class AddShot(forms.ModelForm):
class Meta:
model = Shot
fields = [
'title',
'url',
'streamer',
]
views.py
@login_required
def add_shot(request):
form = AddShot(request.POST or None)
if form.is_valid():
form.save()
instance = form.save(commit=False)
instance.published_date = request.published_date
instance.author = request.user
instance.save()
context = {
'form': form
}
return render(request, 'shots/add_shot.html', context)