У меня есть то, что мне кажется довольно простой настройкой модели, модели и представления, играющего с ними двумя. Единственное неудобство в том, что модель имеет пользовательское свойство, которое нельзя поместить в форму, скорее оно должно быть заполнено request.user
, поэтому у меня есть это:
# models.py
class Update(models.Model):
user = models.ForeignKey(User, related_name="updates")
organisation = models.ForeignKey(Organisation, related_name="updates")
publish = models.BooleanField(default=True)
class UpdateForm(ModelForm):
name = forms.CharField(
max_length=140,
required=False,
widget=forms.TextInput(attrs={"class": "blankable"})
)
class Meta(NodeForm.Meta):
model = Update
# views.py
def status(request):
from myproject.organisations.models import Organisation
from myproject.feeds.models import Update, UpdateForm
stream = 0
if request.method == "POST":
o = request.POST.get("organisation")
if not o or request.user not in Organisation.objects.get(pk=request.POST.get("organisation")).administrators.all():
return HttpResponseRedirect(reverse("ethico.core.views.index"))
f = UpdateForm(request.POST, instance=Update(user=request.user))
if f.is_valid():
stream = f.save()
else:
stream = f.errors
...
При каждом запуске я всегда получаю одну и ту же ошибку:
user: This field is required.
Я пытался установить f
с атрибутом initial
, используя {"user": 1}
, и он все еще говорит, что это необходимо. Я попытался передать измененный POST, скопировав request.POST
в новую переменную и изменив его перед передачей в UpdateForm, но это ужасно. Что я здесь забыл?