Mam modelu Django:Django zapisać modelu z anonimowym użytkownikiem
class Project(models.Model):
user = models.ForeignKey(User)
zipcode = models.CharField(max_length=5)
module = models.ForeignKey(Module)
W moim views.py:
def my_view(request):
...
project = Project.objects.create(
user=request.user,
product=product_instance,
...
)
project.save()
Chcę być w stanie zaoszczędzić użytkownikowi jako uwierzytelnionego użytkownika lub AnonymousUser
(które mogę zaktualizować później). Jednakże, jeśli nie jestem zalogowany otrzymuję ten błąd:
ValueError: Cannot assign "<django.utils.functional.SimpleLazyObject object at 0x1b498d0>": "Project.user" must be a "User" instance.
Myślę, że Django nie uratuje AnonymousUser
ponieważ nie jest użytkownikiem, jak określono w modelu User
. Czy muszę dodać anonimowego użytkownika do modelu User
, czy też czegoś brakuje?
Każda pomoc bardzo ceniona.
Ok, świetnie. Więc jeśli zrobię 'user = request.user' na' AnonymousUser', to pole będzie puste i nie zostanie zgłoszony żaden wyjątek? –
Wyjątek zostanie zgłoszony, ponieważ dostarczyłeś niewłaściwe dane do pola. Po prostu wykonaj 'if request.user.is_authenticated(): project.user = request.user'pl –
Czy muszę też dodać' null-True', ponieważ pole nie może mieć wartości 'null'? –